我正在尝试使用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。知道为什么会这样吗?