如何在GraphQL中映射mongo子文档?我得到NULL

时间:2017-10-09 13:13:27

标签: mongodb graphql apollo

我正在尝试使用mongoose在我的mongo数据库中获取一组记录,并将其发送到GraphQL解析函数。我可以拿到文件。但是子文档总是返回null。如果没有子文档,我会得到一个空数组。例如,我的数据如下所示:

[
  {
    name: '2222dhjshjshfjfsf',
    address: 'dgdgdsf',
    contactNumber: 'dgdgsdfs',
    logo: 'sfsf',
    billingDetails: 'fdsfsdf',
    assignedEmployee: 'sff',
    keyContactPersons:
    [ { name: 'gdgdg',
        contactNumber: 'dgdfg',
        email: 'gdgdfgdfgdsff@gmail.com',
    } ],
    active: true,
    },
    ...
]

我的解析功能如下:

const Company = mongoose.model('Company', new mongoose.Schema(), 'companies');

export default {
  Query: {
    companies: () =>
      new Promise((resolve, reject) =>
        Company.find({})
          .lean()
          .exec((error, doc) => {
            if (error) {
              reject(error);
            }

            resolve(doc);
          }))
  }
};

这是架构:

const typeDefs = gql`
  type KeyContactPerson {
    name: String!
    contactNumber: String
    email: String
  }

  type Company {
    slug: String!
    name: String
    address: String
    contactNumber: String
    logo: String
    billingDetails: String
    assignedEmployee: String
    keyContactsPersons: [KeyContactPerson]
    active: String
  }

  type Query {
    company(_id: ID!): Company
    companies: [Company]
  }
`;

export default makeExecutableSchema({
  typeDefs,
  resolvers
});

当我控制日志从find方法返回的数据doc时,它具有正确的值。问题似乎与类型定义有关。这是我从GraphQL查询中获得的示例输出:

{
  "data": {
    "companies": [
      {
        "slug": "abc-4",
        "name": "abc",
        "keyContactsPersons": []
      },
      {
        "slug": "abc-5",
        "name": "abc",
        "keyContactsPersons": null
      },
    ]
  }
}

第一条记录没有任何keyContactsPersons,即子文档。它返回一个空数组。第二个有一些价值。但它返回null。知道为什么会这样吗?

0 个答案:

没有答案