节点+ 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 });