2017-11-11 308 views
0

我有這個架構用戶貓鼬填充不是爲我工作

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: '[email protected]', 
     _id: 5a070206616810129b5c876a } ], 
    staff: [], 
    active: true, 
    created: 2017-11-11T14:25:56.359Z } 

感謝您的幫助。

回答

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