如何在地图中设置多维数组时解决猫鼬findOne返回空的问题?

时间:2019-03-24 20:17:41

标签: mongoose promise

在地图中设置多维数组时,如何解决猫鼬findOne返回空的问题?

我已经尝试使用回调函数,并且听说了promises。我尝试实现两者,但遇到了困难。当我输出用户的控制台时,它给了我用户对象,但是在返回model.reviews之后,它没有定义。

  if(!_.isEmpty(model.reviews)){

    let result = model.reviews.map(async (item, index)=>{
      console.log('item', item)
      console.log('model', model)

      let user = await User.findOne({ _id: item.user_id }).lean().exec((error, model)=>{ if (error || !model) { return error } else { return model } })
      console.log('user', user)

      model.reviews[index].user = user
    })
  }

  return res.status(200).json({ status: 'success', response: 200, message: 'Found single model.', data: model });
}

我希望获得model.reviews [index] .user = USER,但是在返回的model.reviews中未定义model.reviews [index] .user。

1 个答案:

答案 0 :(得分:0)

    let result = await Promise.all(model.reviews.map(async (item, index)=>{
      console.log('item', item)
      console.log('model', model)

      let user = await User.findOne({ _id: item.user_id }, function (error, user){
        if (error || !user) { return error }
        else {
          return user
        }
      })

      model.reviews[index].user = user


    }))