我有一堆用于GraphQL的ApolloServer,其中MongoDB是数据库,而Mongoose是库。 现在,我已经设置了代码,可以执行一些查询,深入到2-3级。但是当我尝试进一步查询并转到我的原始对象时。它将返回一个空值。
但是,我已经尝试过用一些youtube电影+搜索互联网世界来解决Academind的问题。尚未找到解决方案。
我的解析器功能
module.exports = {
Query: {
athlete: async (root, args, context) => {
return await Athlete.findOne({ _id: args._id }).populate('results');
},
race: async (root, args) => {
return await Race.findOne({ _id: args._id }).populate('athletes');
},
result: async (root, args) => {
return await Result.findOne({ _id: args._id })
.populate('race')
.populate('athlete')
.exec();
},
athletes: async () => {
return await Athlete.find().populate('results');
},
races: async () => {
return await Race.find().populate('athletes');
},
results: async () => {
return await Result.find()
.populate('race')
.populate('athlete')
.exec();
}
}
};
更容易去github:https://github.com/axelvuylsteke/fullstack-graphql-vue/tree/graphQL_stackOverflow_question
npm run dev to start it in dev mode.
您可以运行查询,第一个查询将获得race.name的空值,第二个查询将结果作为源根时,您会得到名称的值:
query searchAthlete {
athlete(_id: "5d690a25a1917025486c27ac") {
_id
country
results{
_id
race{
_id
name
}
}
}
}
query searchResults {
results {
_id
race{
_id
name
}
}
}
我希望从对象到对象的查询有无限的可能... 通常,您可以将dev模式设置为所有开放IP地址,从而连接到mongoDB。 小背景: 运动员将存储比赛结果。 比赛将存储所有参与的运动员。 结果会将结果本身存储在运动员和执行结果的比赛中。