如何使用mongoose定义单个引用模式

时间:2014-06-27 06:51:18

标签: node.js mongodb mongoose

我是 node.js mongodb 的新手,并且在下面的代码中,我在部门的员工中定义了一个引用,但是当我插入或从中获取数据时员工表我总是得到数组格式,但我想将引用定义为单列而不是多个

var employee = new mongoose.Schema({
    name: String,
    dept: [department]
});

var department = new mongoose.Schema({
     dept_name : String,
     dept_code : String
})

我希望来自员工表的数据格式为“{”name“:”CS“,dept:{”id“:_ id_of_dept}}

请指导我实现目标的正确方法。

1 个答案:

答案 0 :(得分:0)

您只能使用引用或数组进行嵌套,因此在此示例中,您可以创建department记录并在employee文档中引用该记录,或者使用department数组s为employee(我理解的不是你想要做的)。

要引用department中的employee文档,您可以使用以下内容:

var department = new mongoose.Schema({
    dept_name : String,
    dept_code : String
});

mongoose.model('Department', department);

var employee = new mongoose.Schema({
    name: String,
    dept: { type: Schema.Types.ObjectId, ref: 'Department' }
});

但是,在查询employee以收集department数据时,您需要populate

但是从较高的层面来看,考虑到您要完成的工作,我建议您直接将department存储在employee文档中。关系数据库通常最终会出现上述类似的模式,但在基于文档的数据库中,将departmentemployee区分开来并不是一个好理由。做一些像我以下所做的事情将来会帮助您查询和一般访问数据:

var employee = new mongoose.Schema({
    name: String,
    dept: {
        dept_name : String,
        dept_code : String
    }
});

This answer might be helpful in understanding what I mean.