节点+ mongo:更新logging需要callback

所以我正在用socket.io监听一个事件,一旦发生这种情况,我试图将logging更新为新的值。

socket.on('contentEdited', function (newContent) { collection.update( { '_id' : ObjectId("5279262e74d92da751eb2b8e") }, { $set: { 'content': newContent } } ), function (err, result) { if (err) throw err; console.log(result) }; }); 

该语法在shell中工作,但在事件触发时在节点中引发以下错误:

错误:如果没有提供的callback,则不能使用writeConcern

我试着在最后添加一个函数来进行基本的错误检查,但我不确定如何提供mongo期望的callback。

还有点新的,谢谢

我认为你的问题是,callback函数需要在更新函数调用,而不是在外面。 nodejs MongoDB驱动程序的格式可以在这里find: http ://mongodb.github.io/node-mongodb-native/api-generated/collection.html#update

所以应该看起来像这样:

 collection.update( { '_id' : ObjectId("5279262e74d92da751eb2b8e") }, { $set: { 'content': newContent } }, function (err, result) { if (err) throw err; console.log(result); }) 

请注意,callback函数之后,括号已经移动。

您也可以将写入关注点设置为“未确认”而不是“已确认”。

MongoDB的“Write Concerns”概念决定了MongoDB成功写入数据库的确定性。 写入关注的最低级别“Unacknowledged”只是将数据写入服务器,并不等待响应。 这曾经是默认的,但现在默认是等待MongoDB确认写入。

您可以在这里了解更多关于编写问题的信息: http : //docs.mongodb.org/manual/core/write-concern/

要将写入关注点设置为未确认,请添加选项{w: 0}

 collection.update( { '_id' : ObjectId("5279262e74d92da751eb2b8e") }, { $set: { 'content': newContent } }, { w : 0 });