[英]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.