【发布时间】:2019-09-17 05:55:09
【问题描述】:
GraphQL Nexus 是相当新的,并且似乎缺少文档。此外,这些例子也很缺乏。从示例和文档中,我尝试添加自己的 NON-GraphQL 标量类型。我按照文档中的示例创建了自己的标量,但是当我尝试在 objecttype 中调用它时,我得到了 read 下划线。我做错了什么?
【问题讨论】:
GraphQL Nexus 是相当新的,并且似乎缺少文档。此外,这些例子也很缺乏。从示例和文档中,我尝试添加自己的 NON-GraphQL 标量类型。我按照文档中的示例创建了自己的标量,但是当我尝试在 objecttype 中调用它时,我得到了 read 下划线。我做错了什么?
【问题讨论】:
为了解决这个问题,我所做的是: 1. 一旦您创建了自己的标量类型,例如:
#json.ts **FILE NAME MATTERS**
export const JSONScalar = scalarType({
name: "JSON",
asNexusMethod: "json",
description: "JSON scalar type",
...})
2。一旦我在一个单独的对象中调用了新类型,我必须在我的字段上方添加它才能编译,你可能没有:
//@ts-ignore
t.topjson("data");
3。在我的 make 架构中,我首先添加了标量代码:
const schema = makeSchema({
types: [JSONScalar, MyObject, BlahObject],
文件的名称非常重要,我认为这是生成模式并查找新类型的方式。我还认为您必须确保首先在 makeSchema 中编译该代码,但是我没有尝试切换顺序,因为我花了很多时间试图弄清楚如何使我自己的标量类型工作。
对于经验丰富的 Nexus 开发人员来说,这可能是不言自明的,但我是新手,所以这些步骤没有让我知道。
编码愉快!
【讨论】:
你也可以这样做:
t.field("data", {type: "JSON"});
这与 TypeScript 完美配合。 我希望他们有更好的示例和文档。他们的示例仅涵盖最琐碎的用例。我非常关注 GraphQL、Prisma、Nexus 和用于庞大数据集的相关工具。因此,我确实遇到了所有限制和缺乏存在的文档。
但是,可惜我们可以在这里汇集我们的知识。
【讨论】: