findById не возвращает результат. Объект const course
имеет значение null каждый раз, когда я регистрирую.
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mongo-exercises', { useNewUrlParser: true });
const courseSchema = new mongoose.Schema({
name: String,
author: String,
tags: [ String ],
date: Date,
price: Number,
isPublished: Boolean
});
const Course = mongoose.model('Course', courseSchema);
async function updateCourse(id){
const course = await Course.findById(id);
if(!course) return;
course.isPublished = true;
course.author = 'Another Author'
const result = await course.save();
console.log(result);
}
updateCourse(Ƌa68fde3f09ad7646ddec17e');
Всего 2 ответа
findById()
возвращает объект Query, а не Promise, поэтому вы получаете нулевой объект, когда будете ждать запроса.
Вызовите метод exec()
в возвращаемом объекте запроса, чтобы получить обещание, которое вы можете ожидать:
const course = await Course.findById(id).exec();
Проблема решена. Я заметил, что когда я импортировал коллекцию до обновления с помощью .findById()
; идентификаторы объектов были сохранены как строки вместо ObjectID