我正在尝试使用mongoose在NodeJS中填充一个引用字段,用于mongodb交互。我有以下代码:
内务管理模型
...
user: {
type: mongoose.Schema.Types.ObjectId
required: true
ref: "User"
}
...用户模型
...
userSchema.virtual("housekeepings", {
ref: "Housekeeping",
localField: "_id"
foreignField: "user"
}
...内务路由器
...
const housekeepings = await Housekeeping.find({day:day, house: house})
.populate("user")
.exec(function (err, housekeeping) {
if(err) return
console.log("Username is: " + housekeeping.user.name
)
})
...这段代码导致不能读取未定义的属性"name“(我在数据库中有应该加载的文档)
发布于 2021-07-22 16:19:48
因此,很明显,问题是我在没有更新数据库和POST方法的情况下,将“内务模型”中的字段名称从"owner“更改为"user”。
发布于 2021-07-20 18:23:37
因为您使用的是Model.find(),所以您的housekeeping将是一个数组。这就是为什么housekeeping.user是未定义的。如果你想找到一个文档,那就改用Model.findOne()。此外,您也不需要在await中使用.exec()。只要:
const housekeepings = await Housekeeping.find({day:day, house: house}).populate("user");
console.log(housekeepings[0].user.name)或者:
const housekeeping = await Housekeeping.findOne({day:day, house: house}).populate("user");
console.log(housekeeping.user.name)https://stackoverflow.com/questions/68451179
复制相似问题