我对传递给写操作的promise函数的参数感到困惑。
例如,updateOne的文档说该回调是updateWriteOpCallback的实例,该实例具有参数error
和result
。
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
是未定义的。为什么会发生这种情况?
答案 0 :(得分:2)
这是因为那不是承诺的工作方式。当诺言被拒绝时,应该使用<form [formGroup]="loginForm">
<input type="text" formControlName="username"/>
</form>
方法而不是promise.catch()
来实现它。
所以:
promise.then()
用于获取promise.then()
操作的结果。resolve()
用于获取promise.catch()
操作的结果。因此您的代码应为:
reject()