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 参考