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');
答案 0 :(得分:2)
findById()
返回查询对象,而不是Promise,因此当您等待查询时会得到一个空对象。
在返回的查询对象上调用exec()
方法以获取一个Promise,然后可以等待:
const course = await Course.findById(id).exec();
答案 1 :(得分:1)
问题已解决。我注意到,在导入集合之前,先进行.findById()
的更新;对象的ID保存为字符串,而不是ObjectID