我有一个项目实体及其任务(一对多关系)。该任务具有项目的外键引用。
这是我的任务模型
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var TaskTemplateSchema = new Schema({
title: {
type: String
},
projectTemplate: {
type: Schema.ObjectId,
ref: 'ProjectTemplate'
},
index: {
type: Number
}
})
mongoose.model('TaskTemplate', TaskTemplateSchema)
我的项目模型
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var ProjectTemplateSchema = new Schema({
title: {
type: String
},
taskTemplateInfo: {
type:String
},
creator: {
type: Schema.ObjectId,
ref: 'User'
}
})
mongoose.model('ProjectTemplate', ProjectTemplateSchema)
现在我想检索属于某个项目的任务列表。
exports.projectTemplateById = function(req, res, next, id) {
ProjectTemplate.findById(id).populate('creator', 'firstName lastName fullName').exec(function(err, projectTemplate) {
if (err) return next(err)
if (!projectTemplate) return next(new Error('failed to load project template ' + id))
req.projectTemplate = projectTemplate
//TODO: NOT FINDING ANYTHING?
TaskTemplate.find({'projectTemplate': projectTemplate}).exec(function(err, taskTemplates) {
if (err) return next(err)
req.projectTemplate.taskTemplates = taskTemplates
next()
})
})
}
请注意以上代码的这一部分:
TaskTemplate.find({'projectTemplate': projectTemplate}).
不会返回任何任务。我尝试了projectTemplate._id
,以及projectTemplate._id.id
,projectTemplate._doc.id
,但以上都不是
[编辑]
当我今天尝试时,我能够检索数组。 我认为问题可能在这里:
exports.read = function(req, res) {
res.json(req.projectTemplate)
}
当用户请求projectTemplate时调用read函数。 taskTemplates属性存在,但未在mongoose模型中定义。 taskTemplates在返回的json中不存在。
答案 0 :(得分:0)
以下代码正在运行:
var str = JSON.stringify(req.projectTemplate)
req.projectTemplate._doc.taskTemplates = req.projectTemplate.taskTemplates
str = JSON.stringify(req.projectTemplate)
res.send(JSON.stringify(req.projectTemplate))
我猜它是因为只有_doc属性被转换为json。