批量删除 如何用bluebird改造
发布于 10 年前 作者 p412726700 4382 次浏览 最后一次编辑是 8 年前 来自 问答

这是当前的代码,用了async模块

async.eachSeries(ids, function (id, callback) {
    Article.remove({_id: id}, function (err) {
      if (err) {
        callback(err);
      }
    })
  }, function (err) {
    if (err) {
      return handleError(res, err);
    }
    return res.send(204);
  });

求助用bluebird怎么做 谢谢

5 回复
var remove = Promise.promisify(Article.remove)
Promise
  .resolve(ids)
  .map(function (id) {
    return remove({ _id: id })
  })
  .then(function (results) {
    res.sendStatus(204)
  })
  .catch(next)

@haio 这样写报错了 code.jpg

err.png

我修改了一下

var remove = function (id) {
  return new Promise(function (resolve, reject) {
    Article.remove({_id: id}, function (err) {
      if (err) {
        reject(err);
      }else{
        resolve();
      }
    });
  });
};
Promise
  .map(ids, function (id) {
    return remove(id);
  })
  .then(function (results) {
    return res.send(204);
  })
  .catch(function (err) {
    return res.send(500, err);
  });

这样写能跑通 就是不知道符合规范不

@p412726700 可以,resolve应该写在else里

if (err) {
	reject(err);
} else {
	resolve();
}

@haio 啊?2了 2了 多谢

回到顶部