2015-02-08 56 views
0

我剛開始學SailsJS,我遇到了以下問題:收集數據並作出響應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

您可以使用服務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); 
});