Mongoose嵌套填充不起作用

时间:2017-08-08 00:43:19

标签: node.js mongodb mongoose

所以当涉及猫鼬填充时,我目前非常困惑。

我的数据结构如下:用户拥有一组客户端,一个客户端有一系列贷款。我正在使用User.find并填充客户端,没问题。但那我如何填充客户内部的贷款?我试过这个:

基本上,目标是传入一组客户端,每个客户端都将包含一笔贷款。但就目前而言,我希望贷款对象为空。正确填充客户端,但贷款参考将作为未定义传递。

app.get("/loans", IsLoggedIn, function(req, res) {
  User.findById(req.user._id).populate({path: "clients", populate: { path: "loans", model: "loan"}}).exec(function(err, user){
    if(err){
      console.log(err);
    } else{
        var amountRepaid = calcRepaid(user.clients.loans);
        console.log(user.clients.loans);
        res.render("index", {clients: user.clients, amountRepaid: amountRepaid});
    }
  });

然而,它似乎不起作用,我的模型列在下面,任何帮助表示赞赏!

模型:

客户端:

var mongoose = require("mongoose");
var clientSchema = mongoose.Schema({
  loans: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "loan"
  }],
  emailAdderess: String,
  firstname: String,
  lastname: String,
  contactNumber: String ,
  dateCreated: {type: Date, default: Date.now},
  gender: String,
})

module.exports = mongoose.model("Client", clientSchema);

用户:

const mongoose = require("mongoose");
const passportLocalMongoose = require("passport-local-mongoose");
var UserSchema = mongoose.Schema({
  username: String,
  password: String,
  firstname: String,
  lastname: String,
  clients: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "Client"
  }]
});
UserSchema.plugin(passportLocalMongoose);

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

贷款:

var mongoose = require("mongoose");

var LoanSchema = mongoose.Schema({
  firstName: String,
  lastName: String,
  email: String,
  contactNumber: Number,
  amountBorrowed: Number,
  length: String,
  address: String,
  dateDue: Date,
  gender: String,
  date: { type: Date, default: Date.now },
  amountRepaid: { type: Number, default: 0},
  loanRepaid: {type: Boolean, default: false}

})

module.exports = mongoose.model("loan", LoanSchema);

1 个答案:

答案 0 :(得分:1)

试试这个:

.populate({
    path: 'clients',
    populate: {
        path: 'clients.loans'
    }
})