【发布时间】:2021-11-08 02:33:32
【问题描述】:
我有这 3 个模型 User、Product 和 Orders,并且相互之间也有引用。
我的订单架构:
const orderSchema = Schema({
buyerId:{
type: Schema.Types.ObjectId,
ref: 'User'
},
totalAmount: {
type: Number,
required: [true, "description is required"]
},
createdOn: {
type: Date,
default: new Date()
},
items:[{type:Schema.Types.ObjectId, ref: 'Product'}]})
我正在尝试像这样使用 populate():
Order.find()
.populate('buyerId')//Reference to User Model
.populate('items')// Reference to Product Model
.exec(function (err, result){
console.log(result);// RETURNS ONLY buyerId populated
console.log(result.buyerId.name);//Successfully references to my User model and prints name
console.log(result.items);//Prints Undefined
})
您可以在上面看到我的控制台日志,它返回的只是填充的buyerId(仅从我的用户模型中获得参考)
似乎我的 populate('items') 根本不起作用。 items 字段包含 ID 数组,其中 ID 是产品的 ID。我需要同时参考用户和产品。我只是在关注猫鼬中的文档,我不知道我可能做错了什么。
【问题讨论】:
-
我认为查找更好,如果你想我创建查询
-
是的,你能帮我吗
-
如果不放 .populate('items'),items 是否包含 id 列表或仍然未定义?因为,那么您在订单中添加新产品的方式或模型可能存在问题。
-
@jeremynac 如果我删除它并留下填充买家 ID,我可以参考并从用户集合中获取数据
-
好的,如果你只输入
.populate('items'),项目是否已填充?
标签: javascript node.js mongodb mongoose