Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 快速/图形化建议_Optimization_Graphql_Express Graphql - Fatal编程技术网

Optimization 快速/图形化建议

Optimization 快速/图形化建议,optimization,graphql,express-graphql,Optimization,Graphql,Express Graphql,我正在学习GraphQL,并寻找一些关于我是否在正确的轨道上的指导,或者我是否完全偏离了这里的基础。基本上,我已经用expressgraphql和Prisma编写了我的后端,我看到了一些不同的教程,它们似乎分别使用大型模板字符串来定义模式来编写类型和解析器。我随后使用newgraphqlobjecttype()构建模式,并将所有不同的类型导入到一个根查询中,然后将其传递到GraphQlSchema() 我的困惑和疑问:这样做对吗? 我最终得到的是一个非常长的模式文件,该文件功能正常,工作正常,但

我正在学习GraphQL,并寻找一些关于我是否在正确的轨道上的指导,或者我是否完全偏离了这里的基础。基本上,我已经用expressgraphql和Prisma编写了我的后端,我看到了一些不同的教程,它们似乎分别使用大型模板字符串来定义模式来编写类型和解析器。我随后使用
newgraphqlobjecttype()
构建模式,并将所有不同的类型导入到一个根查询中,然后将其传递到
GraphQlSchema()

我的困惑和疑问:这样做对吗?

我最终得到的是一个非常长的模式文件,该文件功能正常,工作正常,但不适合维护。我很难在网上找到任何关于如何分离这段代码并保持其功能的例子。我尝试导出一个仅包含GraphQL对象类型的文件,并将它们导入到
schema.js
文件中,然后在那里构建我的根查询,但这似乎不起作用。我曾尝试将字段作为对象导出,然后使用扩展运算符来组合我的根查询,并尝试在我的类型文件中使用多个
new GraphQlSchema()
语句,然后使用graphql工具
mergeSchema
将所有字段组合在一起,但这也不起作用。我在这一点上有点迷茫,只是需要一些指导或一个例子来看看以这种方式构建的更大项目

作为参考,这里有一个代码片段示例,可以清楚地说明我是如何构建GQL后端的,为了澄清查询工作得很好,这里是代码维护,我非常感谢您的建议:)

感谢您提供的帮助或示例

const prisma = require("../config/prismaClient");
const graphql = require('graphql');

const {
    GraphQLObjectType,
    GraphQLSchema,
    GraphQLString,
    GraphQLList } = graphql;

const UserType = new GraphQLObjectType({
    name: "User",
    fields: () => ({
        id: { type: GraphQLString },
        first_name: { type: GraphQLString },
        last_name: { type: GraphQLString },
    })
})

const BusinessType = new GraphQLObjectType({
    name: 'Business',
    fields: () => ({
        id: { type: GraphQLString },
        name: { type: GraphQLString },
        street_address: { type: GraphQLString },
    })
})

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        users: {
            type: new GraphQLList(UserType),
            async resolve() {
                return await prisma.users.findMany();
            }
        },
        businesses: {
            type: new GraphQLList(BusinessType),
            async resolve() {
                return await prisma.businesses.findMany();
            }
        }
    }
})

module.exports = new GraphQLSchema({
    query: RootQuery
})
我的困惑和疑问是:这样做对吗

没有正确或错误的方式来编写您的模式。您可以使用SDL(模式定义语言),这是非常可读的,但是您需要向项目添加一些依赖项来设置它。具有非常好的实用程序,可以轻松编写模式

是的,在尝试设置这些工具时,它可能会有点难以承受。我喜欢根据
Type
在目录中拆分模式和解析器,然后
graphql工具
帮助我将所有解析器和模式合并到一个目录中。 我发现这个项目,看看他们是如何构建graphql服务器的

我的困惑和疑问是:这样做对吗

没有正确或错误的方式来编写您的模式。您可以使用SDL(模式定义语言),这是非常可读的,但是您需要向项目添加一些依赖项来设置它。具有非常好的实用程序,可以轻松编写模式

是的,在尝试设置这些工具时,它可能会有点难以承受。我喜欢根据
Type
在目录中拆分模式和解析器,然后
graphql工具
帮助我将所有解析器和模式合并到一个目录中。 我发现这个项目,看看他们是如何构建graphql服务器的