猫鼬findById不起作用。
只有当我只调用Course.find()时,它才能工作;
这是我的密码
const mongoose = require("mongoose");
mongoose
.connect("mongodb://localhost/mongo-exercises")
.then(() => console.log("Connected to MongoDB"))
.catch((err) => console.error("Could not connect to MongoDB", err));
const courseSchema = mongoose.Schema({
tags: [String],
date: { type: Date, default: Date.now },
name: String,
author: String,
isPublished: Boolean,
price: Number,
});
const Course = mongoose.model("Course", courseSchema);
async function updateCourse(id){
const course = await Course.findById(id);
if(!course) return ;
console.log(course);
course.isPublished = true;
course.author = "Changed Author";
const result = await course.save();
console.log(result);
}
async function getCourses() {
const courses = await Course.find();
console.log(courses);
}
updateCourse('5a68fdd7bee8ea64649c2777');
我的VSCODE终端显示了这个响应。
anuragtj@Anurags-MacBook-Pro exercise % node index.js
Connected to MongoDB
它只是停留在连接到mongodb上,没有显示任何其他内容。
我尝试了多种获取文档byiD的方法--它们都不起作用,而且我认为这是我数据库中的一个问题,因为所有的方法都不起作用。
发布于 2022-09-19 13:48:35
您的数据库显示_id
字段存储为String
类型,但模式没有反映这一点(这意味着Mongoose将假定_id
为ObjectId
类型,并在进行查询之前将其转换为该类型)。
如果将_id
添加到模式中,查询将开始工作:
const courseSchema = mongoose.Schema({
_id : String,
...
});
但是,我建议修复主要问题,即编写到数据库的代码与查询数据库的代码之间的模式不匹配。
https://stackoverflow.com/questions/73774231
复制相似问题