nodejs如何在嵌套.then的情况下安排.catch

时间:2017-01-02 09:13:14

标签: node.js express

假设我有一些如下定义的功能。我的问题是,一个.catch语句将适用于任何数量的嵌套.then?

myModelName.findOne({blah: blah}).then(function(user)
{
  if(user)
    {
      anotherModel.create({blah blah params}).then(function(user){
       response back with something;
     })
     // Should I catch again here for this error or the catch stament below will catch it.
    }
}).catch(function(error){
  response back with error;
});

我知道有更好的方法可以做到这一点,但我只是想了解这种情况。

2 个答案:

答案 0 :(得分:1)

这取决于您的使用案例。你有几个嵌套的catch电话,或者你只有一个:

myModelName.findOne({blah: blah})
  .then(function(user) {
    if(user) {
      return anotherModel.create({blah blah params});
    }
    return user;
  })
  .catch(function(error){
    response back with error;
  });

您还可以在then之后直接附加create来电。但重要的是你要兑现承诺。否则就无法抓住它。

答案 1 :(得分:1)

几乎所有ORM或承诺中都有两件事

  1. 如果查询是依赖的,则使用事务查询样式
  2. 如果查询是独立的,则使用批量查询样式
  3. 需要更多查找交易&批处理https://www.npmjs.com/package/mssql#batch-batch-callback