我想知道如何在ES6上正确显示错误和结果。
这里的代码基本上可行:
db.collection('Videos').findOneAndUpdate({
name: 'Funny Video.mov'
}, {
$set: {
format: 'mp4'
}
}, {
returnOriginal: false
}).then((result) =>{
console.log(result);
});
当我尝试添加错误和结果回调时,即使我传递了错误的信息,它也不会显示错误。看到这段代码:
// THIS DOESNT WORK
db.collection('Videos').findOneAndUpdate({
name: 'Funny Video.mov'
}, {
$set: {
format: 'mp4'
}
}, {
returnOriginal: false
}, (err, result) =>{
if(err){
console.log('Unable to update..');
}
console.log(result);
});
同样在这里。我在这里使用它并且有效。
// THIS WORKS
db.collection('Videos').find({name: 'Home Video.mp4'}).toArray().then((result) =>{
console.log(JSON.stringify(result, undefined, 2));
});
但是如果我添加一个错误回调它不会。看到这段代码:
// THIS DOESNT WORK
db.collection('Videos').find({name: 'Home Video.mp4'}, (err, result) =>{
if(err){
console.log('Cannot find that video');
}
console.log(JSON.stringify(result, undefined, 2));
}).toArray();
知道如何以及为什么?
答案 0 :(得分:0)
这些方法返回promise,不要尝试将节点式回调传递给它们。相反,提供错误处理程序作为second argument to then
:
db.collection('Videos').findOneAndUpdate({
name: 'Funny Video.mov'
}, {
$set: {
format: 'mp4'
}
}, {
returnOriginal: false
})
.then(result => {
console.log(result); // either this runs on fulfillment
}, err => {
console.log('Unable to update..'); // or this runs on rejection
});