我的控制器中有一个代码,用于http请求,以保存用户在前端添加的帖子。所以我做了类似的事情,Model.create()。 现在发生的是回调我想要返回是否成功添加帖子,以便我的前端可以向用户显示适当的消息。但是create方法异步工作。 以下是示例代码:
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()方法是异步的。 我也在其他问题或帖子中读过它。没有任何迹象表明我正在寻找的确切实现,但它确实告诉我"不要打击nodejs的异步性质。它只会在以后伤害。"并相信我,就像其他人一样,我不想受伤。 我基本上需要有关如何处理这个问题的建议。
答案 0 :(得分:2)
如果您想尝试使用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
?我知道我已经使用了exec
,但我从未以这种方式使用done
。
-
更新:done()
似乎已弃用exec()
,所以如果您使用10.x,我肯定会尝试这样做
reference