2016-08-25 25 views
1

我在我的项目中使用猫鼬和蓝鸟。这个警告无处不在,即使我纠正了我的所有代码。它仍然发生。蓝鸟和猫鼬:警告:承诺是在处理程序中创建的,但没有从它返回

exports.middleware = function (req, res, next, id) { 
    Account.findById(id).exec().then(function(account) { 
    if (!account) { 
     return res.status(404).send({ 
     message: 'No account with that identifier has been found' 
     }); 
    } 
    req.account = account; 
    next(); 
    }).catch(function(err) { 
    return next(err); 
    }); 
}; 
+0

这一警告已经更新3.4.3 – Esailija

回答

1

后,我检查的lib/query.js的猫鼬的源代码我注意到,在执行exec()的回调函数的一些问题

https://github.com/Automattic/mongoose/blob/master/lib/query.js#L2243

query.prototype.exec = function exec(op, callback) { 
    ... 
    if (callback) { 
    promise.then(
     function() { 
     callback.apply(null, _results); 
     }, 
     function(error) { 
     callback(error); 
     }); 
    } 
    ... 
} 

有一个在承诺不归路。然后()。所以在猫鼬之前解决这个问题。我只是避免在我的代码中使用exec(回调)。那么每个人都会很高兴。

+0

这似乎是现在的固定更有益的,它应该在猫鼬的下一个版本是确定 –

相关问题