介绍
GraphQL 是一种新兴的数据查询语言,它可以用于构建可伸缩的 API。Express.js 是一个流行的 Node.js Web 框架,它可以轻松地与 GraphQL 集成。然而,在开发过程中,我们可能会遇到一些常见的 GraphQL 错误。在本文中,我们将探讨一些常见错误及其解决方案。
Bug 1: “Cannot read property 'length' of undefined” 错误
这个错误通常表示输入参数不正确,导致 GraphQL 引擎无法解析请求。该错误通常与以下代码片段相关:
----- -------- - - ---- ----- - ------ -------- - ---- ---- - ----- -------- ---- ----- -------- -------- - -- ----- --------- - - ------ - ------ -- -- - -- ---- ---- -- ----- ----- ---- --- -------- ------ ------ - -- ----- - -------- -------- -- - ----- ------- - ----------------- ----- ------- - -------------------- -- - -- ---- ---- -- ----- ---- ---- -- -- ------ ----------------- --- ------ -------- -- - - ----- ------ - --- -------------- --------- --------- ---
在上面的代码片段中,当执行 User.friends
解析器函数时,如果 parent.friendIds
是空值,则会抛出“Cannot read property 'length' of undefined”错误。可以添加如下代码进行校验:
----- - -------- -------- -- - ----- ------- - ---------------- -- --- --- -- -
或者启用 TypeScript 等编译时类型检查机制,捕获输入类型不匹配的错误。
Bug 2: “SchemaError: Expected Iterable, but did not find one for field” 错误
这个错误通常表示类型定义和解析器之间存在不匹配。例如,在以下代码片段中:
----- -------- - - ---- ----- - ------ -------- - ---- ---- - ----- -------- ---- ----- ------ ----- - ---- ---- - ------ -------- ------- ------- - -- ----- --------- - - ------ - ------ -- -- - -- ---- ---- -- ----- ---- ---- ------ ------ - -- ----- - ------ -------- -- - ----- ------ - -------------- -- ---- ---- -- ----- ---- ---- -- -- ------ --------------------- - - -
在上面的代码片段中,User.books
的类型应为 Book
,但是我们却返回了一个单独的对象。要修复此错误,您可以将 User.books
修改为以下内容:
----- - ------ ----- -------- -- - ----- ------ - -------------- -- ---- ---- -- ----- ---- ---- -- -- ----- -------- - ----- --------------------- ------ ----------- - -
Bug 3: “Expected Iterable, but did not find one for field 'Query.'” 错误
这个错误通常表示查询名称不匹配。例如,在以下代码片段中:
----- -------- - - ---- ----- - ------ -------- - ---- ---- - ----- -------- ---- ----- - -- ----- --------- - - ------ - -------- -- -- - -- ---- ---- -- ----- ---- ---- ------ --------- - - -
在上面的代码片段中,getUser
解析器函数与 users
查询名称不匹配,因此会导致“Expected Iterable, but did not find one for field 'Query.getUser'”错误。为了解决这个问题,您需要将getUser
更改为 users
,或者使用别名来调用它。
总结
在本文中,我们讨论了 Express.js 和 GraphQL 中的常见错误以及如
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/651aa67695b1f8cacd281dc4