graphql 查询或突变能否返回标量值
Posted
技术标签:
【中文标题】graphql 查询或突变能否返回标量值【英文标题】:Can a graphql query or mutation return a scalar value 【发布时间】:2019-03-30 22:30:27 【问题描述】:从语法上讲,您可以在模式中定义查询或突变,以便它返回一个类型。 但是,操作定义(即客户端调用的查询或突变)必须有一个 SelectionSet,所以我必须这样做:
mutation X field
所以我的变异或查询的结果必须是一个带有字段的对象,它不能是一个标量。 这是正确的吗?感觉就像我应该能够返回一个标量。通过 HTTP 发送时,结果总是包装在一个信封中,因此无论哪种方式,结果都是有效的 JSON(简单的标量不是严格有效的 JSON)。
我的阅读正确吗?
【问题讨论】:
【参考方案1】:您实际上可以返回一个标量,例如 Boolean
或 String
type Mutation
hello(who: String!): String
发出这个查询
mutation foo
hello("peter")
结果应该是这样的
data.hello // string
用graphql-yoga + graphql-playground对此进行了测试:
【讨论】:
用什么?当我尝试时,GraphiQL 不喜欢这种语法,而且规范显然不允许这样做。我怀疑服务器实现确实允许这样做,但在规范中,操作的定义是它后面跟着 SelectionSet 和 not SelectionSet(opt) 我正在玩 graphql-yoga 和“graphql playground”,示例工作...... 是的,GraphiQL 似乎也喜欢它,但 spec 似乎表明它无效。因为我想返回标量,所以我将把现实置于规范之上! @TomQuarendon 根据规范,上面的示例是有效的。突变名称后跟一个包含 hello 字段的选择集。 在 GraphQL Schema 的请求结果中没有找到关于标量类型的语句,但是这个例子:spec.graphql.org/June2018/#example-50137 好像被认为是从查询中返回一个字符串。以上是关于graphql 查询或突变能否返回标量值的主要内容,如果未能解决你的问题,请参考以下文章
我必须在带有 Sequelize 的 GraphQL 突变中返回啥?