发送结果和错误回调的正确方法 - ES6 - JS

时间:2017-05-06 09:50:49

标签: javascript mongodb

我想知道如何在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();

知道如何以及为什么?

1 个答案:

答案 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
  });