SailsJS:在beforeCreate或afterCreate中访问res.render

我需要访问res.render函数为了呈现一个html模板,但似乎res object没有传递给该函数。 任何想法我怎么能做到这一点?

据我所知这是什么afterCreate得到:

 afterCreate: function(attrs, next) { // attrs is basically just the model next(); } 

       

网上收集的解决方案 "SailsJS:在beforeCreate或afterCreate中访问res.render"

你可以使用sails.express.app.render全局Express渲染器,所以在你的模型中可以是这样的:

 module.exports = { beforeCreate: function(values, next) { sails.express.app.render('home', {locals: {}}, function(err, html) { console.log(html); next(); }); } }; 

模型是应用程序的数据层,与请求响应和视图渲染无关。 beforeCreateafterCreate是模型生命周期callback,用于在数据改变时做一些逻辑。 其实,你可以创build/更改/删除不同地方的模型数据:帆控制台,控制器,服务等,这些callback将被调用。

考虑这种情况:如果在你的控制器中调用YourModel.create()方法100次,那么beforeCreateafterCreate将被调用100次。 所以在任何情况下,在这些callback中提供响应都不是一个好主意。

取而代之,您应该pipe理控制器中的请求处理和响应呈现。 如果您想在创build一些数据后做出回应,那很简单:

 YourModel.create({ somefield: 'Nick', onemore: 'some string' }).done(function(err, data) { // Error handling if (err) { return console.log(err); // our model resord was created successfully! }else { console.log("model created:", data); // if you have nothing else to do here, let's render the view res.view(); } });