我需要在haas
蓝图的结果中添加一些额外的数据。我找到了这个解决方案:
Restful
但是我找不到任何改变响应的方法,或者在蓝图中添加回调。我甚至尝试更改蓝图并在其中添加cb:
find
但在这种情况下,它每次返回500 statusCode(但具有相应的数据)
答案 0 :(得分:2)
我一直在努力解决同样的问题。这是我的黑客(有解释)来解决这个问题。
如果发生错误,内置蓝图将始终调用res.ok
,res.notFound
或res.serverError
。通过更改此方法调用,可以修改输出。
/**
* Lets expose our own variant of `find` in one of my controllers
* (Code below has been inserted into each controller where this behaviour is needed..)
*/
module.exports.find = function (req, res) {
const override = {};
override.serverError = res.serverError;
override.notFound = res.notFound;
override.ok = function (data) {
console.log('overriding default sails.ok() response.');
console.log('Here is our data', data);
if (Array.isArray(data)) {
// Normally an array is fetched from the blueprint routes
async.map(data, function(record, cb){
// do whatever you would like to each record
record.foo = 'bar';
return cb(null, record);
}, function(err, result){
if (err) return res.error(err);
return res.ok(result);
});
}
else if (data){
// blueprint `find/:id` will only return one record (not an array)
data.foo = 'bar';
return res.ok(data);
}
else {
// Oh no - no results!
return res.notFound();
}
};
return sails.hooks.blueprints.middleware.find(req, override);
};
答案 1 :(得分:0)
似乎只存在复制粘贴解决方案。所以我将node_modules / sails / lib / hooks / blueprints / actions中的文件中的所有代码复制到每个控制器的操作中,然后进行更改。