我有一個看起來像這樣的公司模型:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const CompanySchema = new Schema(
{
companyName: String,
settings: {
type: {
priceVisible: Boolean,
allowPickupAddressAddition: Boolean,
paymentMethodsAvailable: [
{ type: Schema.Types.ObjectId, ref: "PaymentMethod" },
],
},
},
}
);
const Company = mongoose.model("Company", CompanySchema);
module.exports = Company;
我想填充paymentMethodsAvailable陣列中存盤的值。這是相關的控制器代碼:
const company = await Company.findOne({ _id: id }).populate([
{
path: "settings",
populate: [{path: "paymentMethodsAvailable"}]
},
]);
但這并不像預期的那樣作業。我可以看到它可能正在嘗試填充設定物件,但在那里失敗了。有什么方法可以告訴貓鼬填充settings.paymentMethodsAvailable嗎?
uj5u.com熱心網友回復:
嘗試這個
const company = await Company.findOne({ _id: id }).populate(
"settings.paymentMethodsAvailable"
);
您可以在檔案中找到更多示例。我使用本節作為參考https://mongoosejs.com/docs/populate.html#populating-maps
uj5u.com熱心網友回復:
Mongoose 提供了清晰的語法 以下代碼可以正常作業
const company = await Company.findOne({ _id: id }).populate(
"settings.type.paymentMethodsAvailable"
);
if(!company) {
// if there is no company with that id
// this acully not error it's simply
// return `null` to tell you company not found.
res.status(404).send()
}
另外:您可以更進一步并在其中填充特定欄位 settings.paymentMethodsAvailable
const company = await Company.findOne({ _id: id }).populate(
"settings.type.paymentMethodsAvailable",
"field1 filed2 filed3"
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335697.html
