Sails JS两个查询第二个失败首先删除

时间:2016-10-10 09:53:39

标签: javascript asynchronous sails.js

我不确定如何描述我的问题,这就是为什么这个问题的标题有点令人困惑。 情况是,如果在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});
        }

1 个答案:

答案 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});
    }

});

您可以使用直接向客户端发送响应或使用回调(错误)