Я использую Node, Express и MongoDB / Mongoose для своего бэкэнда.У меня есть PUT
установленный маршрут:
//where id is the unique id of the review, not the movie
router.put('/update/:id', [jsonParser, jwtAuth], (req, res) => {
Review.findOneAndUpdate(req.params.id,
{ $set: { ...req.body } }, { new: true })
.then(review => {
console.log(review);
res.status(203).json(review);
})
.catch(err => res.status(500).json({message: err}));
});
Используя Postman при создании нового документа на моем маршруте POST
, ответ будет следующим:
{
"genre_ids": [
"28"
],
"_id": "5ce112d0aeadc44ea0ea7bb0",
"movieId": 447404,
"title": "Pokemon Detective Pikachu",
"poster_path": "/wgQ7APnFpf1TuviKHXeEe3KnsTV.jpg",
"reviewer": "5cda5d08f3a74252c83b4a63",
"reviewTitle": "the best",
"reviewText": "new review",
"reviewScore": 5,
"__v": 0
}
Использование Postmanкогда я пытаюсь обновить следующий документ по этому URL .../review/update/5ce112d0aeadc44ea0ea7bb0
, где идентификатор взят из _id ответа POST
выше.Я внес очень простое изменение в запрос PUT
, чтобы изменить счет.
{
"reviewScore": 1
}
Затем я получил следующий ответ по маршруту PUT
.
{
"genre_ids": [
"28"
],
"_id": "5ce089116b537a08403ed25f",
"movieId": 447404,
"title": "Pokemon Detective Pikachu",
"poster_path": "/wgQ7APnFpf1TuviKHXeEe3KnsTV.jpg",
"reviewer": "5ce0882d90b63613700b066a",
"reviewTitle": "the best",
"reviewText": "updated review",
"reviewScore": 1,
"__v": 0
}
Вывидно, что в ответе на запрос PUT
изменились и _id
, и reviewer
.Фактически он создал новый документ для другого пользователя вместо обновления исходного документа.Если я войду в учетную запись, принадлежащую _id
, которая указана в ответе PUT
, это действительно показывает, что для этой учетной записи создан новый документ, а не обновлен документ для другой / исходной учетной записи.
Почему это происходит?Пожалуйста, помогите.