javascript - 何时使用 `parent` 以及何时使用 `root` 作为 GraphQL 解析器函数中的第一个参数

标签 javascript node.js graphql naming-conventions graphql-js

我看过一些教程和示例,它们有时使用 parent 有时使用 root 作为 graphql 解析器中的第一个参数。

在什么情况下正确的命名是什么?为什么?

例如(nodejs):

signup: (root, args, context, info) => signup(root, args, context, info)

对比

signup: (parent, args, context, info) => signup(parent, args, context, info)

或在执行注册的函数中:

const signup(root, args, context, info) = {
    // do magic stuff
}

对比

const signup(parent, args, context, info) = {
    // do magic stuff
}

最佳答案

这里没有既定的约定。我见过 rootparentobj 都在不同的引用指南中使用过。归根结底,您可以随心所欲地调用函数参数——您的代码将发挥相同的作用。

也就是说,我通常使用在其中解析字段的类型的名称。所以对于像这样的类型

type RoomRental {
  user: User
  date: Date
}

解析器签名如下所示:

user: (roomRental, args, context, info) => {
  //
}

我发现当您(或队友)阅读代码时,这可以更容易地推断出您的解析器在做什么。同样,这只是我的偏好,但您可能会发现它有助于使您的代码更易于理解。

为了完成,我还要补充一点,GraphQL.js 确实有一个可配置的 root 值。该值作为根级字段(即 QueryMutation 等类型的字段)解析器中的第一个参数向下传递。通过根传递东西没有太多用处——任何你可能以这种方式传递的东西都应该放在你的 context 中。但是,root 值是实现的一部分,这可能就是为什么您会看到许多示例使用 root 作为第一个参数的名称的原因。

关于javascript - 何时使用 `parent` 以及何时使用 `root` 作为 GraphQL 解析器函数中的第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53051712/

相关文章:

node.js - 安装请求模块时出现错误

microservices - 嵌套 GraphQL 服务器/微服务

javascript - 如何查看消息是否成功保存到本地Redis?

javascript - 在我的案例中,如何使用 createSwitchNavigator 从注销导航到登录屏幕?

javascript - 在方向更改时隐藏 jQuery Mobile 固定工具栏

javascript - 使用 useState 存储来自 useQuery 的数据

graphql - 使用 Gatsby Js 和 GraphQL 查询在该站点中不起作用。他们在测试环境中工作

javascript - jQuery 中奇怪的叠加显示问题

node.js - 同构获取 (REDUX/nodeJs) - 使用用户名/密码的 POST 请求

javascript - 如何在 ES6 中重试 Promise