Как исправить mongoose findOne, возвращающий пустое значение при установке многомерного массива на карте? - PullRequest
0 голосов
/ 24 марта 2019

Как исправить mongoose findOne, возвращающий пустое значение при установке многомерного массива на карте?

Я уже пытался использовать функцию обратного вызова и слышал об обещаниях. Я пытался реализовать два, но у меня трудное время. Когда я вывожу консоль user, она дает мне пользовательский объект, однако после возвращения 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 [index] .user не определен в возвращенном model.reviews.

1 Ответ

0 голосов
/ 25 марта 2019
    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


    }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...