MongoDB节点驱动程序UpdateOne承诺参数

时间:2019-02-13 03:32:17

标签: node.js mongodb

我对传递给写操作的promise函数的参数感到困惑。

例如,updateOne的文档说该回调是updateWriteOpCallback的实例,该实例具有参数errorresult

db.collection.('my-collection')
    .updateOne({_id: someObjectID}, {$set: someChanges}, function(err, result){
        console.log(err); //null
        console.log(result); //CommandResult
    }

在上面的示例中,如果操作成功,则err正确设置为null,并且result包含结果。

但是,如果我选择给我们一个承诺而不是回叫:

db.collection.('my-collection')
    .updateOne({_id: someObjectID}, {$set: someChanges})
    .then((err, result) => {
        console.log(err); //CommandResult
        console.log(result); //undefined
    }

第一个参数err实际上是给我result中应该包含的内容,而result是未定义的。为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

这是因为那不是承诺的工作方式。当诺言被拒绝时,应该使用<form [formGroup]="loginForm"> <input type="text" formControlName="username"/> </form> 方法而不是promise.catch()来实现它。

所以:

  • promise.then()用于获取promise.then()操作的结果。
  • resolve()用于获取promise.catch()操作的结果。

因此您的代码应为:

reject()