Я не могу добавить элементы в свою схему ($addToSet)

#node.js #mongodb #mongoose #discord.js #mongoose-schema

#node.js #mongodb #мангуст #discord.js #мангуст-схема

Вопрос:

У меня есть такая схема. При использовании команды я хочу, чтобы туда добавлялись новые элементы

 const userSchema = new mongoose.Schema({  _id: { //user id  type: String,  required: true,  },  books: [{ //book that user uses   _id: { //book id  type: Number,  required: true,  },  lessons: [{ //lessons of the book with progress  type: String,  required: true,  }],  }], })  

Я пытаюсь добавить их таким образом.

 await userSchema.findByIdAndUpdate(author.id, { $addToSet: { books: {_id: bookid, lessons: progress} } })  

bookid — значение int увеличивается на единицу. progress — массив строк

Но в базу записывается только массив уроков, без идентификатора. Когда я добавляю только идентификатор, то добавляется не идентификатор, а массив уроков. Я потратил уже несколько часов и не могу понять, почему он не хочет добавлять все в массив. Пожалуйста, помогите.

Ответ №1:

Попробуйте с $push оператором:

 await userSchema.findByIdAndUpdate(author.id, {  $push: {   books: {  _id: bookid,  lessons: progress  }  }  })   

Комментарии:

1. Я попробовал, но он по-прежнему вводит данные без идентификатора, только по какой-то причине добавляет массив.

2. Попробуйте console.log(bookid) сделать это перед запросом. Может быть, оно равно нулю или не определено.