Могу посоветовать
- Изменить обновление, чтобы найтиOneAndUpdate, с целью обработки как обновления отчета об «единственном» документе, так и извлечения содержимого этого «единственного» документа.
- Перед передачей id преобразуйте его в ObjectId
- Измените (db.users.update) db на userModel
const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;
userModel.findOneAndUpdate(
{ _id: new ObjectId(id) },
{ $push: { classes: newClass } },
{ upsert: false, new: true }, // upsert looks to find a Message with that id and if it doesn't exist creates the Message if argument is true
);
Надежда поможет вам
Выполнить Индекс этого файлового узла. js и измените ваши коды с этой помощью!
// index.js
const mongoose = require('mongoose');
const ObjectId = mongoose.Types.ObjectId;
const mongoDB = 'mongodb://127.0.0.1/test';
mongoose.connect(mongoDB, { useUnifiedTopology: true, useNewUrlParser: true,useFindAndModify: false });
const userSchema = new mongoose.Schema({
email: String,
password: String,
secret: String,
classes: [String]
});
(async function createAndUpdate(){
// create user
const userModel = mongoose.model("Class", userSchema);
const newUser = new userModel({
email: 'user@gmail.com',
password: 'password',
secret: 'secret',
classes: 'classes1'
});
await newUser.save();
// update user
const newClass = 'new-classes2';
const id = newUser._id;
await userModel.findOneAndUpdate(
{ _id: new ObjectId(id) },
{ $push: { classes: newClass } },
{ upsert: false }
);
})();