猫鼬的findById查询不会返回结果。对象始终为null。

时间:2018-10-08 12:13:12

标签: node.js mongodb mongoose mongodb-query

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('5a68fde3f09ad7646ddec17e');

2 个答案:

答案 0 :(得分:2)

findById() 返回查询对象,而不是Promise,因此当您等待查询时会得到一个空对象。

在返回的查询对象上调用exec()方法以获取一个Promise,然后可以等待:

const course = await Course.findById(id).exec();

答案 1 :(得分:1)

问题已解决。我注意到,在导入集合之前,先进行.findById()的更新;对象的ID保存为字符串,而不是ObjectID