我写过sails简单的web应用程序。
我想为ServerResponse
原型添加新函数以获得常见的错误响应,如下所示。
require('http').ServerResponse.prototype.returnError = function (message) {
console.error("Error: " + message);
return this.view("./error", { errors: [{ stack: message }] });
};
require("../services/UtilService");
以上代码运作良好。但我不会向所有控制器写相同的片段。 我怎么能保持干燥?换句话说,我应该在扩展代码上面写哪个文件?
感谢您的建议和意见。
我向config/bootstrap.js
添加了特殊逻辑,因为我只想运行一次原型修改代码。
这看起来很好。
module.exports.bootstrap = function (cb) {
cb();
require('http').ServerResponse.prototype.returnError = function (message) {
console.error("Error: " + message);
return this.view("./error", { errors: [{ stack: message }] });
};
};
答案 0 :(得分:2)
感谢您的建议和意见。我向config/bootstrap.js
添加了特殊逻辑,因为我只想运行一次原型修改代码。这看起来很好。
module.exports.bootstrap = function (cb) {
cb();
require('http').ServerResponse.prototype.returnError = function (message) {
console.error("Error: " + message);
return this.view("./error", { errors: [{ stack: message }] });
};
};
答案 1 :(得分:0)
这似乎是一个使用策略的好地方,因为六元酰胺建议将原型扩展到“根源”需要更改快速中间件,我认为不推荐使用。
相反,在config/policies.js
中,尝试为所有操作添加默认策略,例如:
someController: {
'*': httpPrototype
}
httpPrototype策略可能如下所示:
module.exports = function httpPrototype (req, res, next) {
require('http').ServerResponse.prototype.returnError = function (message) {
console.error("Error: " + message);
return this.view("./error", { errors: [{ stack: message }] });
};
next();
};