и благодаря тому, что он есть.express & mongoose - Невозможно вызвать метод «получить» неопределенного - используя 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
}
};
И поэтому я использую его в апи конечную точку, например, :
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
Я предполагаю, что приложение не определено, потому что приложение «нет» не существует.
Пожалуйста, помогите мне решить эту проблему? Я думаю, что причина проста, но я не понимаю ...
Спасибо за внимание;)
EDIT: Я пытался res.json.bind(res)
, и она работала, как я думал, но это на самом деле ужасно, чтобы связать этот путь для большинства API конечных точек, и я думаю, что есть другой способ сделать такую функциональность без этого.
EDIT: Благодаря 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