我试图弄清楚如何使用Mongoose和Node.js写入MongoDB,而无需等待响应。写入MongoDB的典型方法是使用回调语法或使用await / async模式。除非您指定回叫或等待响应,否则这两种模式都不会执行查询。
是否有一种以“尽力而为”的方式写入MongoDB的方法?即只需拨打电话,不要等待响应,如果成功成功,那么就没问题。
编辑:
代码:
异步/等待模式:
repc
回调模式
const doc = await Product.findByIdAndUpdate('prod1', {$inc: {viewed: 1}});
console.log(doc);
这两个都等待响应。
答案 0 :(得分:1)
您可以使用w:0 write concern setting进行写入。这将指示MongoDB进行写操作,但不等待反馈。例如:
conn.db('test').collection('test').insertOne({'a': 1}, {'w': 0}, function(err, res) {
assert.equal(null, err);
console.log(res);
})
默认写关注点为w:1
(等待连接到的节点的确认)。如果您使用res
检查以上代码的w:1
输出,它将显示:
...
insertedCount: 1,
...
相反,使用w:0
将显示:
...
insertedCount: undefined,
...
注意:尽管使用此设置会尽力而为地快速返回写入,但这实际上是用于写入的UDP。使用风险自负。