【发布时间】:2017-08-08 21:10:42
【问题描述】:
所以我目前对猫鼬的繁殖感到非常困惑。
我的数据结构如下:用户有一个客户数组,一个客户有一个贷款数组。我正在使用 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);
【问题讨论】:
-
在这里提问时,请不要使用外部链接或代码图片,并在问题中包含相关代码。它还有助于使示例可重现,在这种情况下,这意味着包括应该产生预期结果的相关数据的“子集”。见How to create a Minimal, Complete, and Verifiable example。您可能的原因是模型之间的引用实际上不匹配。这是您应该查看的内容,如果您无法解决,请提供足够的数据以返回至少一个结果。
-
你使用的猫鼬版本是什么?
-
@NeilLunn 抱歉,在我尝试修复了几个小时后,我在睡觉前发布了这个,我的错。我没有包含数据子集的原因是因为我没有使用一个。我想在开始时传入一个空数组,用户稍后会添加到它。我将把它添加到问题中。当您说模型之间的引用不匹配时,我不明白您的意思?你能不能扩大一点?谢谢。
-
@ryder 我使用的是 4.11.5 版
-
@Cathal 你有没有想过这个问题?我遇到了完全相同的问题。