Mongodb 如何在GraphQL resolve中映射mongo子文档?我得到空值
我正在尝试使用Mongodb 如何在GraphQL resolve中映射mongo子文档?我得到空值,mongodb,graphql,apollo,Mongodb,Graphql,Apollo,我正在尝试使用mongoose在我的mongo数据库中获取一组记录,并将其发送到GraphQL解析函数。我可以拿到文件。但是子文档总是返回null。如果没有子文档,我会得到一个空数组。例如,我的数据如下所示: [ { name: '2222dhjshjshfjfsf', address: 'dgdgdsf', contactNumber: 'dgdgsdfs', logo: 'sfsf', billingDetails: 'fdsfsdf',
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);
}))
}
};
我的解析函数如下所示:
[
{
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。你知道为什么会发生这种情况吗?你在mongodb检查过你的数据吗?一个字段可以是空数组,另一个字段可以为空。在解析(doc)之前,您是否记录了“console.log(doc)”以检查数据是否正常?我认为您可以写入keyContactPersons而不是keyContacstPersons。在您的示例数据中,您写的是“keyContactPersons”,但在您的typedef中,您写的是“keyContactsPersons”@alesanderfrança哦,非常感谢。是的,这就是问题所在。真的很抱歉…:-)这可能发生在某人身上;)你在mongodb检查过你的数据吗?一个字段可以是空数组,另一个字段可以为空。在解析(doc)之前,您是否记录了“console.log(doc)”以检查数据是否正常?我认为您可以写入keyContactPersons而不是keyContacstPersons。在您的示例数据中,您写的是“keyContactPersons”,但在您的typedef中,您写的是“keyContactsPersons”@alesanderfrança哦,非常感谢。是的,这就是问题所在。真的很抱歉…:-)这可能发生在某人身上;)