[英]Populate array inside object in mongoose
我有一個看起來像這樣的公司模型:
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
嗎?
嘗試這個
const company = await Company.findOne({ _id: id }).populate(
"settings.paymentMethodsAvailable"
);
您可以在文檔中找到更多示例。 我使用本節作為參考https://mongoosejs.com/docs/populate.html#populating-maps
Mongoose 提供了清晰的語法 以下代碼可以正常工作
const company = await Company.findOne({ _id: id }).populate(
"settings.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.paymentMethodsAvailable",
"field1 filed2 filed3"
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.