如果我的模型中有Schema.ObjectId(类似于MYSQL),我如何列出行的所有元素?

时间:2016-07-11 16:26:56

标签: node.js express mongoose mongoose-populate mongoose-schema

我有2个架构:

var mongoose = require('mongoose');  
var Schema = mongoose.Schema;

var companySchema= new Schema({  
    name: String,
    country: String       
});

module.exports = mongoose.model('Company', companySchema); 

和组(1个公司可以有多个组,每个组可以有组父组):

var mongoose = require('mongoose');  
var Schema = mongoose.Schema;  
var Company= mongoose.model('Company');
var Group= mongoose.model('Group');


var groupSchema = new Schema({  
    name: String,       
    company: { type: Schema.ObjectId, ref: "Company" } ,
    parent_group: { type: Schema.ObjectId, ref: "Group" } ,

});

module.exports = mongoose.model("Group", groupSchema );

在我的群组控制器中,我想列出属于公司的群组,因为在我的视图中,我有2个选择并在更改公司选择时选择群组更改。

我在控制器中有这些:

    //GET /services/groups/:company

    exports.groupsByCompany=function(req,res){

     var company=req.params.company;

     Group.find({company:company},function(err,groups){
      Company.populate(groups,{
        path:'company',
        populate:{path:'group'}
        },function(err,groups){
          res.status(200).send(groups)
           });  
    });
      Group.find()        
    }

我对填充组父集合也有问题,只返回ID组Parent。

由于

1 个答案:

答案 0 :(得分:0)

要使用数据填充组,请尝试

Group.find({'company': company}).exec(function(err, group) {
    if(err) {
        return next(err);
    }
    group.populate('company parent_group', function(err, group) {
        if(err) {
            return next(err);
        }

        res.json(group);
    })
});