我正在寻找一种方法来访问""之后发送回请求者的JSON。过滤器控制器。
var locomotive = require('locomotive');
var myController = new locomotive.Controller();
myController.after('myAction', function(next) {
var response = {}; //I want to access the JSON being sent back in myAction: {'hello':'world'}
console.log(response); //this should log "{'hello':'world'}"
next();
});
myController.myAction = function myAction() {
this.res.json({'hello':'world'});
}
module.exports = myController;
如果有人有任何办法,我们将非常感激。
答案 0 :(得分:0)
在你的主要动作中,将你的json分配给一个对象(res保留):
myController.myAction = function myAction() {
this.model = {'hello':'world'};
this.res.json(this.model);
}
然后你可以在后过滤器中访问它:
myController.after('myAction', function(next) {
var model = this.model;
console.log(model);
next();
});
答案 1 :(得分:0)
我找到了一个" hack"解决方案......它不是最干净的,并且需要在" node_modules" ...
中更改express response.js文件中的代码。如果有人有更好的选择,你可以在控制器动作(或控制器过滤器)本身内访问响应请求的json,我非常感激。
感谢。
this.responseJSON = body;
这允许您在过滤后在控制器中访问this.responseJSON,如下所示:
myController.after('myAction', function(next) {
**var response = this.res.responseJSON; //ACCESS RESPONSE JSON HERE!!!!!**
console.log(response); //Now logs "{'hello':'world'}"
next();
});
像我说的那样,不是最优雅的,而是在紧要关头完成工作。任何更优雅的解决方案都欢迎......