应该完全可以运行以下内容:
function someMiddleware (req, res, next) {
someAsyncBluebirdOperation().then(res.json);
}
但是如果你直接将res
个对象的任何方法作为引用传递给解析处理程序,你将得到以下无益的错误:
[TypeError: Cannot call method 'get' of undefined] __stackCleaned__: true
如果你在另一个函数中将调用包装到res.json
,一切似乎都很好:
function someMiddleware (req, res, next) {
function wrapper(result) {
res.json(result);
}
someAsyncBluebirdOperation().then(wrapper);
}
我只能假设绑定/范围发生了一些问题,但是必须将调用包装在另一个函数中是完全没必要的。
答案 0 :(得分:1)
可能需要将其作为.then
不能执行的方法调用。尝试使用.bind
:
function someMiddleware (req, res, next) {
someAsyncBluebirdOperation().then(res.json.bind(res));
}