cari

Rumah  >  Soal Jawab  >  teks badan

mongodb - pertanyaan serentak mongoose, cara membungkus dengan promise.all

Apa yang saya ingin capai ialah mengendalikan jadual reply - save dan jadual topic pada masa yang sama selepas user, dan kemudian mengembalikannya bersama-sama saya tidak tahu cara menggunakan promise.all untuk membalut dua operasi kemas kini pertanyaan ini saya harap anda boleh membantu saya menyelesaikannya

Kemas kini: Berikut ialah versi yang diubah suai.

/* 回复 话题 */
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
                })
             })
})
滿天的星座滿天的星座2811 hari yang lalu641

membalas semua(1)saya akan balas

  • 迷茫

    迷茫2017-05-02 09:25:25

    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
        })
    })

    Saya mungkin menulisnya, anda boleh mencubanya

    balas
    0
  • Batalbalas