我想摆脱" db-operation完成后的回调" (希望提高node.js内部的性能 - 我正在更新几个100k文件,节点内存消耗需要很长时间才能达到1.5GB,并且一个核心最大化。)
MongoBooks是我的猫鼬模型。
这是带有回调的(测试)代码,它正在运行,它将文档插入空db:
MongoBooks.update({ isbn13: "abc" }, { isbn13: "abc", author: "andreas" }, { upsert: true }, function(err, res) {
console.log(err, res);
});
这是没有回调的代码和0的写入问题 - 这是我希望能提高性能的版本(确实如此)但是没有对数据库做任何事情(我通过集合上的mongo repl检查):< / p>
MongoBooks.update({ isbn13: "abc" }, { isbn13: "abc", author: "andreas" }, { upsert: true, w: 0 });
为什么 w:0 没有对数据库做任何事情?
答案 0 :(得分:2)
根据Mongoose 3.8 release notes,您必须传递回调或明确告诉Mongoose执行“不安全”更新,方法是将true
传递给回调参数。
所以它应该是:
MongoBooks.update({ isbn13: "abc" },
{ isbn13: "abc", author: "andreas" },
{ upsert: true, w: 0 },
true);