這個問題在這里已經有了答案: Mongoose 填充不填充陣列 (3 個答案) 12 小時前關閉。
我正在嘗試創建一個訂單控制器,我想在其中通過參考將其他“購物車”模型存盤在陣列中,如“串列”中所示:
const mongoose = require('mongoose');
const OrderSchema = new mongoose.Schema(
{
list: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Cart',
}],
totalAmount: {
type: Number,
required: true,
},
payment: {
type: String,
required: true,
},
address: {
type: String,
required: true,
},
addressNote: {
type: String,
required: false,
},
createdAt: {
type: Date,
default: Date.now,
}
},
{ timestamps: true }
);
module.exports = mongoose.model("Order", OrderSchema);
我可以將購物車 ID 存盤在串列中,但問題是當我從訂單中獲取時,我希望串列回傳購物車中的內容,而不是我發送的 ID
顯示所有訂單控制器:
const Order = require('../../models/Order');
class ShowAllProduct {
async show(req, res) {
try {
const order = await Order.find({}).populate('list').exec();
return res.status(200).json(order);
} catch (err) {
return res.status(500).json(err);
}
}
}
module.exports = new ShowAllProduct();
我試圖通過 populate 方法做到這一點,但沒有成功。
uj5u.com熱心網友回復:
試試這種方式來填充
const order = await Order.find({}).populate({
path:'list',
model:'Cart'
}).lean();
更新:如果你想從購物車模型填充產品模型,
const order = await Order.find({}).populate({
path:'list',
model:'Cart',
populate:{
path:'product', // field name of product in Cart model
model:'Product'
}
}).lean();
select:'name image_url'如果您只想從模型中選擇特定欄位,請使用inside populate 。
const order = await Order.find({}).populate({
path:'list',
model:'Cart',
populate:{
path:'product', // field name of product in Cart model
model:'Product',
select:'name image_url'
}
}).lean();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/537834.html
