我刚开始学习SailsJS,我遇到了以下问题:
在UserController中,我有以下方法:
/**
* `UserController.create()`
*/
create: function (req, res) {
var d = {};
c = {'fullname' : 'Sergiu Pirlici'}
User.findOne(c, function(err, found) {
d.found = found;
});
User.destroy(c, function(err){
d.destroyed = !err;
});
if(req.method == 'GET') {
res.view(d);
}
else if(req.method == 'POST') {
var dat = req.params.all();
User.create(dat, function(err, created){
d.err = err;
if(!err) {
d.created = created;
}
});
}
d.foo = true;
res.json(d);
},
在变量d
中,我想收集数据并将其传递给查看或以JSON格式发送。
但d
的值为{'foo': true}
。
我明白这是因为先前的行为是异步的。
是否有另一种收集数据并将其传递给响应的方式?
我该怎么做?
答案 0 :(得分:0)
您可以使用服务http://sailsjs.org/#/documentation/concepts/Services 然后传递一个回调参数。
所以在UserService.js上
module.exports = {
FindOne: function(cb){
User.findOne(c, function(err, found) {
cb(found);
});
}
};
然后在你的控制器上:
UserService.FindOne(function(found){
//other logic
var d = { result : found } ;
res.json(d);
});