在使用sails执行res.view()函数调用之前如何调用另一个服务(函数)JS
在sails将页面渲染为html之前,我想调用一个单独的函数(例如Service函数)。敬请参阅我下面的控制器代码...在使用sails执行res.view()函数调用之前如何调用另一个服务(函数)JS
var MYController = {
index: function(req, res, next) {
req.flash("error", "Testing hello world");
MyCustomServices.myFunction(req, res);
res.view();
}
}
我想补充我的服务功能,API /服务/ MyCustomServices.js
exports.myFunction = function(req, res){
Test.findOne({ code : "CODE" }, function(err, resp) {
if (resp) {
res.locals.TEST = resp;
}
});
var msg = req.flash('error');
res.locals.ERROR = msg.length>0 ? msg : "" ;
};
在这种情况下,执行res.view有前当我调用MyCustomServices.myFunction(req,res)时运行另一个进程;
问题是,每当我有res.view()函数调用时,我需要在我的控制器的所有动作中添加这一行。
我试着添加这个MyCustomServices.myFunction(req,res);在express.js中,但它似乎没有按预期工作。但我认为,这应该是明示的,只是我不知道我需要添加哪些代码。
什么是我的MyCustomServices.myFunction内(REQ,RES)是:
- 查询到帆从MongoDB的 获取一些数据
- 解析req.flash消息中的意见传递显示。
任何人都有这个想法?
如果您需要致电res.view
您Service
后完成执行,你可以从控制器删除res.view
,并把它的服务本身:
var MYController = {
index: function(req, res, next) {
req.flash("error", "Testing hello world");
MyCustomServices.myFunction(req, res);
//res.view();
}
}
exports.myFunction = function(req, res){
Test.findOne({ code : "CODE" }, function(err, resp) {
if (resp) {
res.locals.TEST = resp;
res.view(); //TADA
}else {
/* Handle Error */
}
});
var msg = req.flash('error');
res.locals.ERROR = msg.length>0 ? msg : "" ;
};
谢谢......但这不是我正在寻找的方法......因为我已经创建了很多控制器动作,如果我实现这个,我需要在任何地方调用这个函数,这是很难管理的......我而是期待express.js。感谢您的时间... – Nina 2014-11-05 09:20:08
两个选项
为您的服务添加回调
var MYController = {
index: function(req, res, next) {
req.flash("error", "Testing hello world");
MyCustomServices.myFunction(req, res, function(){
return res.view();
});
}
}
exports.myFunction = function(req, res, cb){
Test.findOne({ code : "CODE" }, function(err, resp) {
if (resp) {
res.locals.TEST = resp;
return cb()
}
});
};
- 或(根据您的意见) -
您可以将自定义响应处理程序添加到您的应用程序。检出http://sailsjs.org/#/documentation/concepts/Custom-Responses
您可以用res.ok()替换res.view(),然后用您的服务修改api/responses/ok.js。
或者你可以创建自己的响应,如果你不希望与ok.js乱
谢谢,但不是这个...有没有反正express.js的某处,这个文件将在res.view sails函数调用之前执行? – Nina 2014-11-05 09:21:16
可以显示在myFunction的() – Quince 2014-11-04 08:26:18
喜木瓜的代码,我更新的代码感谢您的时间:) – Nina 2014-11-04 08:34:38