Почему мой get-маршрут не запускает мой запрос mongoose?

#reactjs #express #mongoose #axios #mongoose-schema

#reactjs #экспресс #mongoose #axios #mongoose-schema

Вопрос:

Я создаю приложение, в котором пользователи могут размещать сообщения в блогах на домашней странице. Прямо сейчас я работаю только над получением сообщений, которые не принадлежат зарегистрированному пользователю. Вот запросы axios во внешнем интерфейсе:

   //Get user token
  getUser() {
    const token = this.props.location.state.token;
    if (token) {
      this.setState({ token: token });
      Axios.get('http://localhost:3000/api/posts', {
        headers: {
          'auth-token': token,
        },
      })
        .then((res) => {
          this.setState({ id: res.data._id });
          this.getPosts(res.data._id);
        })
        .catch((err) => {
          console.log(err);
          throw err;
        });
    }
  }

  //Get specific posts
  getPosts(id) {
    Axios.get(`http://localhost:3000/api/posts/all/${id}`)
      .then((res) => {
        console.log(res);
        this.setState({ posts: res.data });
      })
      .catch((err) => {
        console.log(err.message);
        throw err;
      });
  }

  componentDidMount() {
    this.getUser();
  }  

Функция getToken() успешно получает правильного пользователя и соответствующий идентификатор. Затем я передаю идентификатор своей функции getPosts, которая отправляет запрос get на этот маршрут на серверной части:

 // GET POSTS FROM OTHER USERS
router.get('/all/:id', async (req, res) => {
  try {
    console.log('GET POSTS FROM OTHER USERS');
    console.log(req.params);

    const user = await User.find({ _id: req.params });
    console.log(user);

    const posts = await Post.find({ email: { $ne: user[0].email } });
    console.log(posts);
    res.send(posts);
  } catch (err) {
    res.send(err);
  }
});  

Оба console.log(‘ПОЛУЧАТЬ СООБЩЕНИЯ ОТ ДРУГИХ ПОЛЬЗОВАТЕЛЕЙ’) и console.log (req.params) запускаются и печатаются в моем терминале, но больше ничего не происходит с поиском пользователя и поиском сообщений. Когда я консольно регистрирую ответ во внешнем интерфейсе, я получаю следующее: введите описание изображения здесь

Почему я не получаю никаких данных в своем ответе? Я знаю, что я попадаю на маршрут, и запросы mongoose написаны правильно. Есть ли какое-то асинхронное поведение, которого мне не хватает?

Ответ №1:

 const user = await User.find({ _id: req.params });
  

req.params это объект, и вам нужно извлечь идентификатор, который вы хотите передать в свой запрос.

Вот пример того, как разрушить ваш объект. Возможно, вам потребуется настроить назначение в соответствии с именем свойства.

 const { id } = req.params;