首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongoose findById() --无法工作,所有函数都试图通过ID获取文档,但都没有工作。

Mongoose findById() --无法工作,所有函数都试图通过ID获取文档,但都没有工作。
EN

Stack Overflow用户
提问于 2022-09-19 13:32:58
回答 1查看 25关注 0票数 0

猫鼬findById不起作用。

只有当我只调用Course.find()时,它才能工作;

这是我的密码

代码语言:javascript
运行
复制
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终端显示了这个响应。

代码语言:javascript
运行
复制
anuragtj@Anurags-MacBook-Pro exercise % node index.js           
Connected to MongoDB

它只是停留在连接到mongodb上,没有显示任何其他内容。

我尝试了多种获取文档byiD的方法--它们都不起作用,而且我认为这是我数据库中的一个问题,因为所有的方法都不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-19 13:48:35

您的数据库显示_id字段存储为String类型,但模式没有反映这一点(这意味着Mongoose将假定_idObjectId类型,并在进行查询之前将其转换为该类型)。

如果将_id添加到模式中,查询将开始工作:

代码语言:javascript
运行
复制
const courseSchema = mongoose.Schema({
  _id : String,
  ...
});

但是,我建议修复主要问题,即编写到数据库的代码与查询数据库的代码之间的模式不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73774231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档