程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应?

开发过程中遇到Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应的问题如何解决?下面主要结合日常开发的经验,给出你关于Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应的解决方法建议,希望对你解决Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应有所启发或帮助;

在互联网上搜索特定示例后,我认输并寻求帮助。

我正在使用 Apollo 服务器、GraphQL 和 Sequelize,并且我正在调用返回从两个不同表创建的记录集的存储过程。我正在取回数据,但我不知道如何将结果放入 GraphQL 架构响应中。

这是我的解析器中的代码:

async functionname(_,{input},{user = null}) {
    if (!user) {
        throw new AuthenticationError('You must login to use this function');
    }
    const {record_ID} = input;
    const result = await DBservice.query(
        'Call sp_JoinTwotables_SELEct(:ID)',{
            model: FooModel,mapToModel: true,raw: true,@R_674_9363@cements: {ID: record_ID},type: queryTypes.SELECT
        }
    );
    console.log('functionname.result');
    console.log(result); // GetTing results
    return result;
}

这是我的架构中的代码:

const {gql} = @R_675_10613@ire('apollo-server-express');

module.exports = gql`
    type Foo {
        ID: Int!
        foo_name: String!
        date_created: String!
        date_modifIEd: String!
    }

    extend type Mutation {
        functionname(input: fooinput!): fooResponse!
    }

    input fooinput {
        ID: Int!
    }

    type fooResponse {
        tree: [fooscheR_205_11845@aForBothtables!]
    }
    type fooscheR_205_11845@aForBothtables {
        ID: Int!
        foo_name: String!
        column_from_second_table: Int!
    }
`;

由于数据库中没有表,所以我创建了一个简单的对象。当失败时,我尝试了一个续集的模型对象,但这也失败了。这是这段代码:

@H_774_9@module.exports = {FooModel: {
    ID: 0,fooname: '',column_from_second_table: 0
}};

我得到的输出是(不是我想象的二维数组):

ExecuTing (default): Call sp_CommunityHIErarchy_SELEct(9)
SELEctHIErarchyTree.result
[
  {
    '0': {
      community_ID: 1,community_name: 'Cars',level_from_apex: null,parent_ID: null
    },'1': {
      community_ID: 8,community_name: 'Chevy',level_from_apex: 2,parent_ID: 1
    },'2': {
      community_ID: 9,community_name: 'Suburban',level_from_apex: 3,parent_ID: 8
    },Meta: [ [columnDef],[columnDef],[columnDef] ]
  },{ affectedRows: 6,insertID: 0,warningStatus: 0 }
]

解决方法

您的“原始”数据库结果:

  • 是一个数组;
  • 第一个元素是一个对象,其记录/项目编码为索引命名的属性;

您需要的变更(为什么不是查询类型!?)响应应该是 tree: [fooscheR_205_11845@aForBothTables!] - 具有 tree 命名属性的对象(真的需要额外的嵌套级别?),带有 fooscheR_205_11845@aForBothTables- 数组形状对象作为值:

{
  tree: [
    {
      id: 1,foo_name: 'Cars`,column_from_second_table: 'whatever`,},{
      id: 2,foo_name: 'Chevy`,}
  ]
}

您的工作是将 DB 响应转换为所需的变异结果形状。

提示:您可以在辅助项目(codesandbox)中对此 DB 结果(一些输入常量)进行硬编码,并编写一些转换 fn。准备好后在这个解析器中使用它。

您还可以搜索一些更可靠的sequelize(暂时不理会graphql)具有“更有效”模型映射的教程。

下一步?

如果它是一棵树,那么为什么不将其作为树结构返回 - 嵌套节点/类型?

大佬总结

以上是大佬教程为你收集整理的Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应全部内容,希望文章能够帮你解决Apollo 服务器、GraphQL 和 Sequelize - 如何将原始数据放入 GraphQL 模式响应所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-