【发布时间】:2020-04-12 20:14:20
【问题描述】:
我目前正在学习 GraphQL,作为开发过程的一部分,我对代码的模块化很感兴趣 - 我确实了解如何编写查询,但不了解如何正确实现查询的查询。
那是rootQuery.js
const {
GraphQLInt,
GraphQLList,
GraphQLObjectType,
GraphQLSchema,
GraphQLFloat,
GraphQLString
} = require("graphql");
const bankRootQuery = require('../graphql/queries/bank.queries')
const rootQuery = new GraphQLObjectType({
name: "rootQuery",
fields: {
bankRootQuery: { type: bankRootQuery, resolve: () => { console.log(bankRootQuery.resolve) } }
}
});
module.exports = new GraphQLSchema({
query: rootQuery
});
这里是 bankRootQuery.js:
const { GraphQLObjectType, GraphQLInt, GraphQLNonNull, GraphQLID, GraphQLList } = require("graphql");
const BankType = require('../types/bank.type');
const models = require('../../models/models_handler');
module.exports = new GraphQLObjectType({
name: "bankRootQuery",
fields: {
getbanks: {
type: new GraphQLList(BankType),
resolve: () => {
return models.getBanks()
}
},
getbankByID: {
type: BankType,
args: {
bankID: { name: "bankID", type: GraphQLInt }
},
resolve: (_, args) => {
if (!models.getBanks().has(args.bankID))
throw new Error(`Bank with ID ${args.bankID} doesn't exists`);
return models.getBank(args.bankID);}
}
}
});
将bankRootQuery 分配给方案对象而不是rootQuery 工作得很好,但是使用GraphiQL 查询时使用rootQuery 会产生空结果-Documentation Explorer 结构似乎是正确的,所以我'我猜测问题出在 resolve 函数上,我不明白如何正确定义。
这是使用 GraphQL 查询时的结果:
{
"data": {
"bankRootQuery": null
}
}
【问题讨论】:
标签: node.js structure graphql-js modularity resolver