收集数据并做出响应SailsJS

时间:2015-02-08 16:35:35

标签: javascript node.js sails.js

我刚开始学习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}

我明白这是因为先前的行为是异步的。

是否有另一种收集数据并将其传递给响应的方式?

我该怎么做?

1 个答案:

答案 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);
});