並感謝在那裏。express&mongoose - 不能調用未定義的方法'get' - 使用res.json()
問題: 我正在做一個微小的貓鼬「中間件」來處理貓鼬錯誤:
// callback function called at each mongoDB response
var handleDbRes = function(callback) {
return function (err, entries) {
if (err) {
err.status = 500;
return next(err);
}
return callback(entries) // that line throw the exception
}
};
所以我使用它變成一個API端點,例如:
someRouter.get('/', function(req, res) {
models.article.find(handleDbRes(res.json))
})
與該代碼,我遇到了一個錯誤:
TypeError: Cannot call method 'get' of undefined
我跟着例外,看着res.json()聲明,在調試時,我想通了:
var app = this.app;
var *** = app.get('***') // that line throw the exception
我想這個應用程序沒有定義,因爲應用程序不存在於「this」中。
請你能幫我解決這個問題嗎?我認爲,原因很簡單,但我不明白這一點...
感謝您的收聽;)
編輯:我試圖res.json.bind(res)
和它的工作,因爲我以爲,但這是真的可怕的是爲大多數API端點綁定這種方式,我想還有另一種方法來做這種功能沒有。
編輯:由於MSCDEX建議,我修改我的代碼是這樣的:
.get('/', function(req, res, next) {
models.article.find(handleDbRes(res.json.bind(res), next))
...
...
// callback function called at each mongoDB response
var handleDbRes = function(successCallback, errorCallback) {
return function (err, entries) {
if (err) {
err.status = 500;
return errorCallback(err);
}
return successCallback(entries)
}
};
感謝您的詳細回答, 我編輯了我的帖子,提供有關此問題的解決方案。 ;) – Kaari 2014-09-28 20:31:10