Попытка ПОЛУЧИТЬ все документы «классов» из Mongo DB с идентификаторами объектов пользователя, которые соответствуют идентификатору объекта пользователя пользователя, который их создал

#node.js #arrays #mongodb #express #mongoose

#node.js #массивы #mongodb #выразить #mongoose

Вопрос:

Я создаю портал продаж с помощью стека MERN и пытаюсь получить все документы в коллекции MongoDB под названием «классы», которые были созданы пользователем, который в данный момент вошел в систему. Для этого я пытаюсь получить все «классы», которые имеют один и тот же идентификатор объекта «user».

Вот пример документа «classes»: classes document

Вот мой контроллер:

 // @desc    Fetch classes made by logged in user
// @route   GET /api/classes/
// @access  Public

const getClassesByUserId = asyncHandler(async (req, res) => {
    const classes = await Class.find({ user: req.user.id });

    if (classes) {
      res.json(classes);
    } else {
      res.status(404);
      throw new Error('Classes not found');
    }
  });
 

Я использую низший метод? Я пропускаю объявление переменной? Где я ошибаюсь?

Комментарии:

1. И в чем именно проблема?? Одна вещь, которую я бы не стал делать, это выдавать ошибку, res.status(404); этого достаточно. Ну, вы не отвечаете, если классы не найдены, вы должны сделать res.status(404).send();

2. Проблема в том, что мне нужно извлекать только документы из коллекции «classes», которые были созданы зарегистрированным пользователем. Я хочу получить документы с идентификатором объекта «user», который соответствует идентификатору объекта зарегистрированного пользователя.

3. Хорошо, я понимаю, чего вы хотите, но какие проблемы у вас с вашим кодом? Вы не получаете ожидаемых результатов? Что вы получаете тогда?

4. Я не уверен, что использую правильную структуру запроса или правильно определяю свои значения для правильного выполнения запроса. Вот посмотрите на мое действие «listUserClasses»: export const listUserClasses = user => async (dispatch, getState) => { try { dispatch({ type: CLASS_USER_LIST_REQUEST }); const { userLogin: { userInfo }, } = getState(); const config = { headers: { Authorization: Bearer ${userInfo.token} , }, }; const { data } = await axios.get( /api/classes?user= ${user} , config);