繁体   English   中英

node.js猫鼬外键检索

[英]node.js mongoose foreign key retrieval

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

这是我的任务模型

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.idprojectTemplate._doc.id ,但是上述方法均projectTemplate._doc.id

[编辑]

当我今天尝试时,我能够检索该阵列。 我认为问题可能在这里:

exports.read = function(req, res) {
    res.json(req.projectTemplate)
}

当用户请求projectTemplate时,将调用read函数。 存在taskTemplates属性,但未在猫鼬模型中定义。 taskTemplates在返回的json中不存在。

以下代码正在运行:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM