#node.js #mongodb #mongoose
#node.js #mongodb #mongoose
Вопрос:
Итак, у меня есть объект, который выглядит следующим образом
{"_id":"5fb07ab6215679200cef0eb1","user":{"_id":"5fb07437538fcd2870e21a8e","email":"example@example.com","id":"5fb07437538fcd2870e21a8e"},"question":"question?","answers":[{"_id":"5fb07ab6215679200cef0eb2","answer":"Yes","votes":0}],"voters":[],"createdAt":"2020-11-15T00:47:50.156Z","updatedAt":"2020-11-15T00:47:50.156Z","__v":0,"id":"5fb07ab6215679200cef0eb1"}
и я пытаюсь увеличить переменную votes с помощью этой функции, используя findOneAndUpdate
export const castVote = async (id, answersid) =>
Poll.findOneAndUpdate(
{ id, 'answers._id': answersid },
{ $inc: { 'answers.$.votes': 1 } }
);
Насколько я вижу, вызов castVote("5fb07ab6215679200cef0eb1", "5fb07ab6215679200cef0eb2")
работает так, что не приводит к сбою сервера и не выдает никаких ошибок, но переменная votes в объекте answers не увеличивается, поэтому что-то должно быть не так. Есть ли что-то очевидное, чего мне здесь не хватает ?.
Комментарии:
1. Вам просто нужно убедиться, что идентификаторы в базе данных — это идентификатор объекта? затем исправьте это
{ _id: mongoose.Types.ObjectId(id), 'answers._id': mongoose.Types.ObjectId(answerid) }
2. спасибо, все заработало, просто удалив поле id, которого, я думаю, мне достаточно, поскольку они созданы уникально
Ответ №1:
заставил его работать, просто отбросив поле id, которого, я думаю, мне достаточно, поскольку они созданы уникально