【发布时间】:2021-11-14 14:31:11
【问题描述】:
我正在尝试学习 Ben Awad 的 lireddit 教程。
在 6.49,他演示了如何将类型分配给需要覆盖默认预期值的参数。
解析器有:
@Resolver()
export class PostResolver {
@Query(() => [Post])
async posts(
@Arg("limit", () => Int) limit: number,
@Arg("cursor", () => String, { nullable: true }) cursor: string | null
): Promise<Post[]> {
const realLimit = Math.min(50, limit);
const qb = getConnection()
.getRepository(Post)
.createQueryBuilder("p")
.orderBy('"createdAt"', "DESC")
.take(realLimit)
if (cursor) {
qb.where('"createdAt" < :cursor', new Date ( parseInt(cursor)) )
}
return qb.getMany();
}
当我尝试使用它生成类型时,它失败了。我收到错误提示:
- GraphQLDocumentError:未知类型“Int”。 [注意:Int 是从 type-graphql 导入的]
- 字段“Query.posts”上的未知参数“光标”。
- 字段“Query.posts”的未知参数“limit”。
任何人都可以帮助解决如何以允许 graphql 生成类型的格式获取解析器吗?我在这里看到了一些描述使用浮点数而不是整数作为数字的帖子,但我认为这与文档所说的我应该能够实现的目标背道而驰。
Ben 展示了他如何检查 graphql 文档以查找查询对参数类型的期望。我无法从我的文档中获得相同的反馈。
在this example 中,Arg for limit 的定义略有不同,如下所示:
@Arg("limit", type => Int) 限制:数字,
“类型”一词似乎没有在任何地方定义,此用例会生成一个错误,指出“类型已声明但未使用”。
我现在卡住了,因为我在 web 端删除了我的 node_modules 和 dist 文件夹,并试图重新运行 yarn。重新安装了 node_modules,但没有重新创建 dist 文件夹(我认为如果我可以成功运行:“graphql-codegen --config codegen.yml”(这是猜测),可能会发生这种情况。
所以现在我无法启动服务器来尝试再次运行该生成器。
【问题讨论】:
-
嗨@xadm - 在这个指向另一个版本的帖子解析器的链接中,您是否发现了一些有用的东西?我尝试评论我的并使用这个,但是当我尝试运行 yarn gen 时仍然遇到同样的错误。
-
只需运行/遵循一些工作示例/教程
-
感谢@xadm 的建议。我正在尝试了解本教程的工作原理,以便我可以学习如何与 graphql 交互。这就是教程很有帮助的原因。我在您共享的解析器中没有发现任何有用的信息。感谢您建议我对其进行审查。虽然它确实扩展了教程文件,但它没有回答或提供任何可能有助于解决我发布的问题的见解。
标签: graphql typegraphql