РЕДАКТИРОВАНИЕ: Сводка
Чтобы люди могли обновлять конкретный c проект, идентификатор пользователя, который уже сохранен при создании проекта пользователем, должен соответствовать их текущему идентификатору пользователя. Текущий пользователь сохраняется в req.users, поэтому к нему можно получить доступ после того, как пользователь вошел в систему.
Внутри моего проекта goose Схема проекта У меня есть следующая
const projectSchema = new mongoose.Schema(
{
name: String,
description: String,
userId: mongoose.Schema.ObjectId,
}
...
Что если запрос по find () вернет:
{
_id: 213213156,
name: "Project1",
description: "A brief description"
userId: 3131132, //this is the user that created this project
}
//I have set this router so that is protected, so users need to login.
Routing:
router
.route("/:projectId")
.get(projectsController.getProject)
.patch(authController.protect, projectsController.updateProject);
Как это работает?
Каждый раз, когда я создаю проект, я назначаю userId, который текущий пользователь, вошедший в систему, имеет.
Что я пробовал?
Я пытался сделать запрос с помощью Model.find (), получить userId и затем сгенерировать оператор if.
Я также пытался сделать некоторые промежуточные программы, но я думаю, что я их не правильно использую.
Что я хочу сделать?
Я хочу иметь возможность обновить ТОЛЬКО для проекта, если его auth _id (текущий идентификатор пользователя, который хранится в req.users) совпадает с полем userId проектов, которое уже сохранено в этом проекте.
Пример.
// I want to be able to access the userId without having to query find() -- because then I would have to perform 2 queries: find() and then findByIdAndUpdate
if(userId !== req.user.id) {
return new Error(msg)
}