2013-05-16 6 views
0
db.createCollection("category",function(errDb,collection){ 
    collection.findOne({name:"test"},function(err,value){ 
     if(value == null) 
     { 
      collection.insert({name:"test"}) 
     } 
    }) 
}) 

Ошибка: Не удается использовать writeConcern без функцию обратного вызоваПоставлен внутри функции обратного вызова действия выполнения запроса

+1

Возможный дубликат [Ошибка при вставке документа в MongoDB через Node.js] (http://stackoverflow.com/questions/14407834/error-when-inserting-a-document-into-mongodb-via-node- js) – JohnnyHK

+0

Отсутствие функции обратного вызова. , –

+0

Как показывает дубликат, вам необходимо предоставить функцию обратного вызова. Ваш вызов 'insert' не использует обратный вызов. – WiredPrairie

ответ

0

Вы должны предоставить обратный вызов функции записи, как вы writeConcern 1 (его значение по умолчанию), когда вы создали соединение с базой данных. Ваш код должен нравится:

db.createCollection("category",function(errDb,collection){ 
    collection.findOne({name:"test"},function(err,value){ 
     if(value == null) 
     { 
      collection.insert({name:"test"}, function(err, docs){ 
       if (err) //do anything you want to do when there is an error 
       // Here you write code for what you would do when the documents were sucessfully  inserted into the collection 

      }); 
     } 
    }) 
}) 

Но если вы не хотите, забота запись должна быть активирована, и вы хотите вставить, используя функцию, что вы сделали тогда, когда вы создаете соединение, вам придется подключить как это.

var MongoClient = require('mongodb').MongoClient; 

MongoClient.connect("mongodb://localhost:27017/integration_test_?", { 
    db: { 
     w : o 
    } 
    }, function(err, db) { 
    test.equal(null, err); 
    test.ok(db != null); 

// Do anything like you were doing here 
} 

Здесь я установил writeConcern 0. Это предотвращает mongo.db, чтобы подтвердить вам об успехе вставки или обновления. Итак, теперь вы можете просто использовать collection.insert({name:"test"});

Просто слово беспокойства будьте осторожны при использовании с w: 0, поскольку вы не хотели бы использовать его для данных, которые вы хотите знать о вставке или обновлении, поскольку вы можете потерять некоторые данные из-за неудачной записи.

Смежные вопросы