Я хочу обновить некоторые свойства курса с указанным идентификатором.
Это мой код:
const mongoose = require('mongoose');
const courseSchema = new mongoose.Schema({
name: String,
author: String,
tags: [String],
date: Date,
isPublished: Boolean,
price: Number
});
const Course = mongoose.model('Course', courseSchema);
mongoose.connect('mongodb://localhost/mongo-exercises');
async function updateCourse(id) {
const result = await Course.update({_id: id}, {
$set: {
author: 'New',
isPublished: false
}
});
console.log(result);
}
updateCourse('5a68fde3f09ad7646ddec17e');
На консоли я получаю {ok: 1, nModified: 0, n: 0}
.
Я пытался обновить элемент другим способом, но он не работает. Для этого куска кода я не получаю результат, нет ответа:
const course = await Course.findById(id);
if(!course) return;
course.isPublished = true;
course.author = 'Another Author';
const result = await course.save();
console.log(result);
Когда я пытаюсь выполнить обновление с использованием findByIdAndUpdate с этим другим кодом, в консоли выводится нулевое значение:
async function updateCourse(id) {
const course = await Course.findByIdAndUpdate(id, {
$set: {
author: 'Billy',
isPublished: false
}
});
console.log(course);
}
updateCourse('5a68fde3f09ad7646ddec17e');
База данных, с которой я работаю, имеет:
{ _id: 5a68fdd7bee8ea64649c2777,
name: 'Node.js Course',
author: 'Sam',
isPublished: true,
price: 20 },
{ _id: 5a68fde3f09ad7646ddec17e,
name: 'ASP.NET MVC Course',
author: 'Mosh',
isPublished: true,
price: 15 },
{ _id: 5a6900fff467be65019a9001,
name: 'Angular Course',
author: 'Mosh',
isPublished: true,
price: 15 },
{ _id: 5a68fe2142ae6a6482c4c9cb,
name: 'Node.js Course by Jack',
author: 'Jack',
isPublished: true,
price: 12 }
Курс не обновляется. Где ошибка?
Обратите внимание, что если я хочу создать новые документы, он делает это без проблем.