#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);