问题描述
想实现的是 reply - save后,同时操作 topic表和user表,然后一起返回,不知怎么用promise.all来包装这2个 查询更新 操作,希望大家能帮我解决下= =
更新:下面是修改好的.
/* 回复 话题 */router.post(’/reply’, (req, res, next) => { let topic_id = req.body.topic_id, content = req.body.content let replyEntity = new replyModel({ author: req._id, topic: topic_id, content }) replyEntity.save() .then((_new_reply) => {Promise.all([ topicModel.findByIdAndUpdate(topic_id, { $inc: {replyNum: 1}, last_reply_author: req._id, last_reply_time: Date.now() }), userModel.findByIdAndUpdate(req._id, { $push: {replies: _new_reply._id} })]).then((res_arr) => { return res.json({ status: 0 })}).catch((err) => { return res.json({ status: -1 })}) }) .catch((err) => {return res.json({ status: -1}) })})
问题解答
回答1:replyEntity.save() .then((_new_reply) => {var topic = function (topic_id,authorId) { return topicModel.findByIdAndUpdate(topic_id, {$inc: {replyNum: 1},last_reply_author: authorId,last_reply_time: Date.now() }).exec();}var user = function (authorId,replyId) { return userModel.findByIdAndUpdate(authorId, {$push: {replies: replyId} }).exec();}return Promise.all([topic(topic_id,req._id), user(req._id,_new_reply._id)]) .then(function (results) {console.log(’===results===’,results);return res.json({ status: 0})}).catch((err) => {return res.json({ status: -1}); }).catch((err) => { return res.json({status: -1 })})
大概写了下,你试试呢

