首页 > 解决方案 > GraphQL 类型关系 / Mongoose Schema / populate()

问题描述

在运行查询以检索所有公司时,返回与其公司相关的地区时遇到问题。创建公司时,没有设置区域。区域是单独创建的。

连接/关系是公司内的“区域”和区域内的“母公司”。运行 getAllTerritories 时,“parentCompany”被正确填充(我相信这是由于您在创建 Territory.

所以我想我的问题是,在运行 getAllCompanies 查询时,在 Company 上填充区域数组的最佳方法是什么?

类型:

type Company {
  _id: ID
  state: String!
  name: String
  territories: [Territory]
  createdAt: String
  updatedAt: String
  createdBy: User!
}

type Territory {
  _id: ID
  name: String
  parentCompany: Company!
  issues: [Issue]
  prodAdmins: [ProdAdmin]
  masterAgents: [MasterAgent]
  createdAt: String
  updatedAt: String
  createdBy: User!
}

询问:getAllCompanies: [Company]

getAllCompanies: async (_, args, { Company, Territory }) => {         
      const companies = await Company.find({})
        .sort({ createdAt: 'desc' })
        .populate({
          path: 'territories',
          model: 'Territory',
        })
        .populate({
          path: 'createdBy',
          model: 'User',
        });    
      return companies;
    },

关于公司架构:

territories: {
  type: [mongoose.Schema.Types.ObjectId],
  ref: 'Territory',
},

标签: javascriptmongodbmongoosegraphqlapollo

解决方案


推荐阅读