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/