Возникли проблемы с увеличением объектов внутри массива с помощью moongose

#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, которого, я думаю, мне достаточно, поскольку они созданы уникально