猫鼬人群不适合我

时间:2017-11-11 16:12:22

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

我有用户

的此架构
var mongoose = require("mongoose"),
    passportLocalMongoose = require("passport-local-mongoose");

mongoose.Promise = global.Promise; 

var userSchema = new mongoose.Schema ({
    username: {type: String, required: true, unique: true},
    password: {type: String},
    role: {type: String, required: true},
    confirmed: {type: Boolean, required: true, default: false},
    active: {type: Boolean, required: true, default: true},
    name: String,
    created: {type: Date, default: Date.now},
    admin: {type: Boolean, default: false, required: true}
});

userSchema.plugin(passportLocalMongoose);

module.exports = mongoose.model("User", userSchema);

公司的另一个架构,其中客户指的是用户的数组:

var mongoose = require("mongoose");
mongoose.Promise = global.Promise; 

var companySchema = new mongoose.Schema ({
    name: {type: String, required: true, unique: true},
    created: {type: Date, default: Date.now},
    active: {type: Boolean, required: true, default: true},
    staff: [{
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "User"
        },
        username: String
    }],
    clients: [{
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "User"
        },
        username: String
    }]
});

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

我的路线中有以下代码,但是用户信息没有填充到公司对象中,我做错了什么?

// EDIT route
router.get("/:company_id/edit", middleware.checkCompanyOwnership, function(req, res) {
     Company.findOne({_id: req.params.company_id}).populate({path: 'clients'}).exec(function(err, company) {
        if (err || !company) {
            console.log(err);
            req.flash("error", err.message);
            res.redirect("/");
        } else {
            console.log("Request to edit company.");
            //console.log(company);
            res.render("company/edit", {title: "Edit Company", company: company});
        }
     });
});

如果我登录日志公司

,这就是我所得到的
{ _id: 5a070874b4292914444b6e06,
  name: 'ABC',
  __v: 1,
  clients: 
   [ { username: 'abcdefg@gmail.com',
       _id: 5a070206616810129b5c876a } ],
  staff: [],
  active: true,
  created: 2017-11-11T14:25:56.359Z }

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您的公司架构应如下所示

var companySchema = new mongoose.Schema ({
    ...
    staff: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }],
    clients: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }]
});

查看文档http://mongoosejs.com/docs/populate.html