Node.js 在不等待响应的情况下写入MongoDB

Node.js 在不等待响应的情况下写入MongoDB,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我试图弄清楚如何使用Mongoose和Node.js编写MongoDB,而不必等待响应。写入MongoDB的典型方式是使用回调语法或使用wait/async模式。除非指定回调或等待响应,否则这两种模式都不会执行查询 有没有一种方式可以以“尽力而为”的方式向MongoDB写信?也就是说,只要打电话,不要等待回复,如果成功了,那就很好,如果不成功,就没有问题 编辑: 代码: 异步/等待模式: const doc = await Product.findByIdAndUpdate('prod1', {

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

有没有一种方式可以以“尽力而为”的方式向MongoDB写信?也就是说,只要打电话,不要等待回复,如果成功了,那就很好,如果不成功,就没有问题

编辑:

代码:

异步/等待模式:

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

Product.findByIdAndUpdate('prod1', {$inc: {viewed: 1}, func(err, doc) {
    console.log(doc)
});

这两个都在等待响应。

您可以使用。这将指示MongoDB进行写入,但不等待反馈。例如:

  conn.db('test').collection('test').insertOne({'a': 1}, {'w': 0}, function(err, res) {
    assert.equal(null, err);
    console.log(res);
  })
默认的写入问题是w:1等待您连接到的节点的确认。如果您使用w:1检查上述代码的res输出,它将显示:

  ...
  insertedCount: 1,
  ...
  ...
  insertedCount: undefined,
  ...
相反,使用w:0将显示:

  ...
  insertedCount: 1,
  ...
  ...
  insertedCount: undefined,
  ...

注意:尽管使用此设置时,写操作将尽最大努力快速返回,但这基本上是您的写操作的UDP。使用风险自负。

添加一些有问题的代码。。!你试过什么?我的意思是,就像我说的,我知道如何使用wait/async或回调来实现。要我使用每种语法编写标准查询吗?似乎只是为了编写代码而编写代码,而没有增强问题的含义。我要求代码建议现有代码中的方法。。!答案很简单..只需将函数回调放在mongo查询之外或等待查询之前。。!不,这对其他阅读本文的人来说是行不通的。