簡體   English   中英

在貓鼬中填充對象內的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM