Запрос Mongoose findById не возвращает результат.

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


Есть идеи?

10000