[英]Mongoose Populate returning ObjectID instead of content
我正在尝试创建一个项目调度程序应用程序,到目前为止我有 2 个模型,ProjectModel 和 ProjectTaskModel。 但是,当尝试填充时,我似乎只获得了任务的 objectID。
项目模型.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const projectModel = new Schema({
title:{type:String,required:[true,"Project Title is required"]},
desc:{type:String,required:true},
status:{type:String,required:true},
tasks:[{type:Schema.Types.ObjectId,ref:'Task'}]
})
module.exports = mongoose.model('Project',projectModel);
项目任务.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const projectTaskModel = new Schema({
title:{type:String,required:[true,"Project Title is required"]},
desc:{type:String,required:true},
status:{type:String,required:true}
})
module.exports = mongoose.model('Task',projectTaskModel);
索引.js
app.get('/project/:id',async(req,res) => {
const project = await projectModel.findOne({_id:req.params.id});
const test = project.populate('tasks');
console.log(test);
res.send(test);
})
Postman
{
"tasks": [
"6086ba5837f40a20cc5be2b2",
"6086bd16c0f35353b848e6cc"
],
"_id": "6086b85b26bc1e79ac34b135",
"title": "Second project",
"desc": "This is a projcet I did TO DO for myself",
"status": "completed",
"__v": 2
}
在您的 ProjectModel.js 上,您已将任务初始化为Schema.Types.ObjectId的类型和“任务”的引用,这就是为什么当您尝试此 > project.populate('tasks')时它只会向您发送 ID。 如果你想要完整的任务 object,那么做这样的事情,当你得到任务的 ID 时,你用这些 ID 向你的“任务” model 发出另一个请求,这次你将得到你的完整 ZA8CFDE6331BD49EB2AC96F891 希望这能帮助你理解事情。
我不确定你是否已经解决了这个问题,但这里有两件事我会尝试。
最后,它看起来像这样:
const project = await projectModel.findOne({_id:req.params.id}).populate('tasks').exec();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.