SailsJS / NodeJSpipe理asynchronous性质

我在我的控制器中有一个代码,在http请求上工作,以保存用户在前端添加的post。 所以我做了一些像Model.create()。 现在发生了什么事情是在回电我想​​返回是否成功添加的post,以便我的前端可以显示适当的消息给用户。 但创build方法asynchronous工作。 以下是一个示例代码:

create: function(req, res){ Activity.create(req.body).done( function(err, persistedActivity) { // Error handling if (err) { return res.json({success: false}); // The Activity could not be created! } else { return res.json({success : true}); } } ); 

}

但是这个代码不起作用,因为Activity.create()方法是asynchronous的。 我也在其他问题或post中阅读过。 没有任何信息表明我正在寻找的具体实现,但它确实告诉我“不要与nodejs的asynchronous性质作斗争,它只会在晚些时候受到伤害”,相信我和其他人一样,我也不想受到伤害。 我基本上需要如何处理这个问题的build议。

如果你想用Sails承诺试试这个,看起来像这样:

 create: function(req, res){ Activity.create(req.body) .then(function(persistedActivity) { return res.json({success : true}); }) .fail(function(err){ return res.json({success: false}); // The Activity could not be created! }) } 

我不太熟悉SailsJS没有承诺,但你可能想尝试使用exec而不是done链接你的创build调用时done ? 我知道我用过exec ,但是我从来没有用过这种方式。

– 更新:似乎done()已被弃用,以支持exec()所以我肯定会尝试,如果您使用10.x 参考