我有這兩個3個模型:用戶、產品和訂單,它們也相互參考。
我的訂單模式:
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')//參考產品模型。
.exec(function(err, result){
console.log(result);// RETURNS ON only buyerId populated。
console.log(result.buyerId.name); //成功參考我的用戶模型并列印出名字。
console.log(result.items);//Prints Undefined。
})
你可以看到上面我的控制臺日志,它所回傳的只是填充的buyerId(只從我的用戶模型中得到了參考)
。似乎我的populate('items')根本不起作用。items欄位包含ID陣列,其中的ID是那些產品的ID。我需要同時參考用戶和產品。我只是按照mongoose的檔案操作,我不知道我可能做錯了什么。
uj5u.com熱心網友回復:
使用聚合
Order.aggregate( [
{ $match:{ user:"sample_id" $lookup:{
from:'users', // users collection name.
localField:'buyerId'。
foreignField:'_id'。
as:'buyerId'$lookup:{
from:'items', //items集合名稱。
localField:' items'。
foreignField:'_id'。
as:'items', as:'items'
}
},
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/319845.html
標籤:
