使用 GraphQl 返回无模式对象? [复制]

Posted

技术标签:

【中文标题】使用 GraphQl 返回无模式对象? [复制]【英文标题】:Return schemaless object with GraphQl? [duplicate] 【发布时间】:2019-12-29 04:23:11 【问题描述】:

我有一个人为的表“Json”,它将 json 存储为字符串。

id | data
----------------------------
1  | " 'foo': 'bar' "
2  | " 'cat': 'dog' " 

我希望能够从 json 形式的 graphql 查询中返回它(而不是在客户端进行转换)。如何在 graphQl 中标注杂项对象类型?

类似:

query 
  json(id: 1) 
    data 
      #whatever data is has?
    
  


--would return--


  "data": 
    "foo": "bar"
  

【问题讨论】:

为什么不创建一个字符串类型的'json'类型? 我希望我的 api 返回一些不需要解析的东西。 【参考方案1】:

GraphQL 在这方面是强类型的,所以你不能这样做。您必须将 JSON 作为字符串返回(或其他适合您目的的已定义 GraphQL 类型,但您可能希望使用字符串)并在客户端上对其进行解析。 GraphQL 查询/响应的每一部分都对应于模式,并且每个字段都有一个类型。

【讨论】:

嗯...我在 nodejs 中。你能想出什么好办法来强迫它吗? 你不能,它违背了 GraphQL 工作原理的核心概念/流程。如果您在树中的某个点无模式,则此后无法继续执行。您可以“强制它”,但这将是从树中的点向下处理的结束。要做到这一点,你必须破解一些核心工具。 我根本不关心树下的处理。但是不得不破解核心工具听起来很麻烦。谢谢。 你可以尝试在 GraphQL 解析后做这个服务器端,一旦你得到结果,如果你能以某种方式识别结果中的 JSON 字符串。然后你可以用解析的对象替换 JSON 字符串。但是您的查询与您的响应不匹配,您无法使用 GraphQL 客户端等。 我真正想做的是让 graphql 能够使用与我的其余端点相同的功能。有点做混合动力车。所以在这种情况下,我要么让 GraphQl 返回 misc json,要么让我的端点返回一个字符串。

以上是关于使用 GraphQl 返回无模式对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL - 如果父返回类型是对象列表,则模式拼接上的模式委派不起作用

Apollo GraphQL:用于查询返回不同类型对象的模式?

我必须在带有 Sequelize 的 GraphQL 突变中返回啥?

graphql中未知对象的模式类型

Apollo/Graphql,Postgres - 为啥这个查询返回 null? [复制]

为啥我的 Graphql 查询返回 null? [复制]