我不确定如何描述我的问题,这就是为什么这个问题的标题有点令人困惑。 情况是,如果在SailsJS控制器内部有一个动作,它应该在两个不同的查询的帮助下保存数据。我的问题是,如果第二个查询失败(因为两个查询的数据已连接),有一种漂亮而优雅的方法可以删除第一个条目吗?
我目前的做法是使用async auto。如果有错误,我会检查一个查询是否成功并将其删除。但我不能不认为必须有更好的方法。
布鲁诺
修改 这是我目前的代码:
async.auto([
user: function(callback) {
User.create({
mail: data.mail,
password: data.password,
device_id: data.device_id,
own_number: data.own_number
}).exec(callback);
},
contact: function(callback) {
Contact.create({
number: data.own_number,
number_id: util.hash(data.own_number),
soundlogo: null
}).exec(callback);
}
],
function(error, results) {
// check for error
if(error){
sails.log(error);
// Check whether one was successful and remove it
return res.json({errorMsg: error});
}
答案 0 :(得分:0)
你可以使用简单的异步系列()
async.series([
user: function(scb) {
User.create({
mail: data.mail,
password: data.password,
device_id: data.device_id,
own_number: data.own_number
}).exec(function(err, user){
if(user){
scb(null, user);
}
else{
return res.json({errorMsg: "failed to create user!"});
// scb("failed to create user!");
}
});
},
contact: function(scb) {
Contact.create({
number: data.own_number,
number_id: util.hash(data.own_number),
soundlogo: null
})
.exec(function(err, contact){
if(user){
scb(null, contact);
}
else{
return res.json({errorMsg: "failed to create contact!"});
// scb("failed to create contact!");
}
});
}
],
function(error, results) {
// check for error
if(error){
sails.log(error);
// Check whether one was successful and remove it
return res.json({errorMsg: error});
}
});
您可以使用直接向客户端发送响应或使用回调(错误)