2016-08-25 63 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

這似乎是現在的固定更有益的,它應該在貓鼬的下一個版本是確定 –

相關問題