【问题标题】:How to return a json string as response in GraphQL如何在 GraphQL 中返回 json 字符串作为响应
【发布时间】:2021-01-19 19:42:27
【问题描述】:

我是全新的 graphQL。我的要求是发送查询时,graphQL 应该返回如下 JSON 响应

{
    user: '$',
    name: 'Josh',
    age: '30'
}

我尝试了以下方法,但没有得到结果。

var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');

var schema = buildSchema(`
  type Query {
    user: String!
  }
`);


// JSON
var json = {
    user: '$',
    name: 'Josh',
    age: '30'
};

var root = {
    user: () => {
      return json;
    }
};

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

谁能指导我哪里出错了。

提前致谢。

【问题讨论】:

  • 在 GraphQL 中,您希望为所有返回的 JSON 对象创建类型。在您的情况下,您不应该为用户返回String,而可能是User 类型的对象,然后定义用户类型:type User { user: String! name: String! age: String! }。考虑将年龄转换为Int

标签: json graphql response


【解决方案1】:

我用以下方法实现:

var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');
const { GraphQLJSON, GraphQLJSONObject } = require('graphql-type-json');

var schema = buildSchema(`
  scalar JSON
  type Query {
    getObject: JSON
  }
`);

var root = {
    JSON: GraphQLJSON,
    
    getObject: () => {
      return {
        name: "jshua",
        age: "30",
        place: "china",
        gender: "Male"
      }
    }
    
};

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

https://github.com/taion/graphql-type-json

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多