gpt4 book ai didi

node.js mongoose 外键检索

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:26 25 4
gpt4 key购买 nike

我有一个项目实体及其任务(一对多关系)。该任务具有对项目的外键引用。

这是我的任务模型

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 模型中定义。返回的 json 中不存在 taskTemplates。

最佳答案

以下代码正在工作:

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。

关于node.js mongoose 外键检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com