node.js - Mongoose Populate - 缺少架构错误,但架构已为模型正确注册

标签 node.js mongodb mongoose

2021 年最后一天!在花了 5 个多小时在互联网上搜索后,我不得不发帖寻求帮助。

期望的行为:

  • 路由返回的文档列表将包含填充的文档,而不仅仅是引用 ID

尝试的解决方案:

  • 填充后添加了执行函数
  • Stackoverflow 让我误以为问题与 mongoose 连接有关,因此我修改了后端,以便我的模型文件返回模式而不是模型,然后使用 mongoose.createConnection 而不是 .connect,并制作一个 db.js 模块,用于保存每个模型 (connection.mode()) 的单个实例,然后可以访问和共享路由文件。我没有达到可以测试 .populate 的程度,所以我将 git 重置回下面的代码

错误

MissingSchemaError: Schema hasn't been registered for model "progressions".
Use mongoose.model(name, schema)

请注意,尝试填充“类(class)”时也会引发此错误

进度模型

const Progress = mongoose.model('Progress', new Schema({
  lesson: {
    type: Schema.Types.ObjectId,
    ref: 'lesson'
  },
  progressions: [{
    type: Schema.Types.ObjectId,
    ref: 'progression'
  }],
  progress:{
    type: Number
  },
  user:{
    type: Schema.Types.ObjectId,
    ref: 'user'
  }
},{
  timestamps: true,
}));

module.exports = Progress;

进度路线文件

router.get('/all', async (req, res) => {
  let user = await User.find({email:req.query.user})
  let data = await Progress.find({user:user}).populate('progressions')
  return res.status(201).json({
     data,
    message: 'data populated',
    success: true
  });
});

进展模型

const Progression = mongoose.model('Progression', new Schema({

  type:{
    type:String
  },
  toBeReviewed:{
    type: Date,
    default: Date.now
  },
},{
  timestamps: true,
}));

module.exports = Progression;

最佳答案

尝试更改 Progress 架构中的 progressions 属性 ref 属性,以匹配 Progression 模型名称 (大写):

progressions: [{
    type: Schema.Types.ObjectId,
    ref: 'Progression'
}]

关于node.js - Mongoose Populate - 缺少架构错误,但架构已为模型正确注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70540704/

相关文章:

node.js - Docker 构建不使用 npm ci 的缓存

coding-style - 如何正确处理 Node.JS 中的延迟操作?

javascript - 在 mongodb 中实现分页

mysql - 如何正确存储两个用户之间的聊天记录

javascript - node js中require模块的路径在windows中工作但在linux中不工作

node.js - Mongoose 查询 : remove "_id" attribute, 在结果中保留虚拟属性 "id"

java - MongoTemplate 实体模型上的 @Version 注解

javascript - Mongoose 忽略对象的一部分,除非定义为 Schema.Types.Mixed

mongodb - 子文档上的 Mongoose 唯一索引

node.js - 为什么 Mongoose 不更新?