无需等待响应即可写入MongoDB

时间:2019-05-30 00:11:18

标签: node.js mongodb mongoose

我试图弄清楚如何使用Mongoose和Node.js写入MongoDB,而无需等待响应。写入MongoDB的典型方法是使用回调语法或使用await / async模式。除非您指定回叫或等待响应,否则这两种模式都不会执行查询。

是否有一种以“尽力而为”的方式写入MongoDB的方法?即只需拨打电话,不要等待响应,如果成功成功,那么就没问题。

编辑:

代码:

异步/等待模式:

repc

回调模式

const doc = await Product.findByIdAndUpdate('prod1', {$inc: {viewed: 1}});
console.log(doc);

这两个都等待响应。

1 个答案:

答案 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。使用风险自负。