如何修复回调已在回送模型中调用

时间:2018-11-22 09:28:04

标签: mysql node.js rest loopbackjs

我尝试在环回模型中扩展api。 在模型中,我使用了诸如findOne,create之类的模型的标准api。 示例代码如下

Subscriber.findOne({
 where : {
      email : "............."
 },
 function(err, instance){
      if(instance)
      {
           cb(null,instance);
           response = "success";
      }
 }
 cb(null, response);

但是当我调用此扩展api时,发生了错误。

throw err:// Rethron non-MsSQL errors
    ^

Error: Callback was already called.

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

您需要在return回调中使用if,因为您没有使用else语句。将您的代码更改为:

Subscriber.findOne({
  where: {
    email: "............."
  },
  function(err, instance) {
    if (instance) {
      response = "success";
      return cb(null, instance);
    }
  },
  return cb(null, response);
});

答案 1 :(得分:1)

更好的代码:

Subscriber.findOne({
  where: {
    email: "............."
  },
  (err, instance) => {
    if (err) return cb(err)
    
    if (!instance) {
      let error = new Error()
      error.status = 404
      error.message = 'Subscriber not found.'

      return cb(error)
    }
      
    cb(null, instance)
  }
})