Graphql 突变查询不适用于 express-graphql

Posted

技术标签:

【中文标题】Graphql 突变查询不适用于 express-graphql【英文标题】:Graphql mutation query not working with express-graphql 【发布时间】:2018-11-10 01:13:33 【问题描述】:

我是 graphql 的新手。我正在使用express-graphql 为petSore 模式生成关于REST API 的graphql 查询。我可以使用 graphql Queries 获得 GET API 的结果,但我无法使用 Mutations 获得 POST/PUT API 的响应。 ) 为了创建宠物,我使用了变异,

 mutation 
     addPet(body: id: "111", name: "doggie", photoUrls:["http://localhost:3000/pics/doggie"]) 
          name,
          id
     
 

在 localhost:3000/graphql 上运行此查询时,我在后端遇到错误(nodejs 错误),

uncaughtException: First argument must be a string or Buffer...

如果有人帮助我理解我在这里做错了什么,那就太好了......

Node.js 代码:

'use strict';
 var graphqlHTTP = require('express-graphql');
 var graphQLSchema = require('swagger-to-graphql');
 var pathToSwaggerSchema = require('./schema.json');

 module.exports = function(server) 
 var router = server.loopback.Router();
 router.get('/', server.loopback.status());
 graphQLSchema(pathToSwaggerSchema).then(schema => 
 server.use('/graphql', graphqlHTTP((req) => 
    return 
      schema: schema,
      context: 
      GQLProxyBaseUrl: 'http://localhost:3000/api/v2/',
    ,
    graphiql: true,
  ;
));
  ).catch(e => 
   throw e;
  );
  server.use(router);
 ;

我必须遵循的过程是:

    将 swagger 转换为 graphql 架构。 提供生成的 graphql 架构作为 express-graphql 的输入。 GQLProxyBaseUrl 是所有 petstore REST API 的后端 URL。

【问题讨论】:

能否提供addPet突变的来源以及GET的解析器?我的意思是它是如何在 Node.js 端定义的。 @AntonioNarkevich 用 nodejs 代码更新了问题。 addPet 函数和突变在哪里...请发布相同的代码 您好,感谢您的支持。我已经解决了上述问题。 【参考方案1】:

突变声明未添加到代码中。请添加突变

提供了了解如何进行突变的链接 enter link description here

【讨论】:

以上是关于Graphql 突变查询不适用于 express-graphql的主要内容,如果未能解决你的问题,请参考以下文章

用户注册的 GraphQL 突变不适用于 jwt

Express-graphql“在运行突变和查询时无法使用 mongodb 读取未定义的属性‘集合’”

如何对 express-graphql 突变进行单元测试?

嵌套资源上的 GraphQL 突变

如何在 GraphQL 中执行突变?

GraphQL 突变和查询:无法读取未定义的属性