批量删除 如何用bluebird改造
这是当前的代码,用了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 回复
数组map
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 这样写报错了
我修改了一下
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了 多谢