问题标签 [graphql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
552 浏览

facebook - 我可以在 Facebook Graph API 中查询可选字段吗?

我有用户和 Facebook 页面的 OAuth2 访问令牌,但我的数据库中没有存储类型区别。我希望能够使用相同的 Graph API 查询获取有关用户/页面的基本信息 - 但对于用户,我希望在此基础上获取电子邮件字段。

  1. GET v2.5/me?fields=name,email// 用户令牌

    成功。

  2. GET v2.5/me?fields=name,email// 页面标记

    错误。 (#100) Tried accessing nonexisting field (email) on node type (Page)

由于我不知道令牌属于用户还是页面,所以我无法,email轻松地从查询中删除该字段。有什么方法可以指定“可选”email字段,所以我没有收到上述错误?

,emailPS:目前,如果导致错误,我会进行第二次请求。

0 投票
6 回答
60223 浏览

graphql - graphql 可以返回聚合计数吗?

Graphql 很棒,我已经开始在我的应用程序中使用它。我有一个显示摘要信息的页面,我需要 graphql 来返回聚合计数?这可以做到吗?

0 投票
1 回答
171 浏览

reactjs - “教”客户端用于 graphql 的端点

我正在调整以在 hapi 服务器的上下文中工作,该服务器还定义了许多其他“常规”api 端点。如果我想以这种方式为 graphql 定义一个端点(类似于 README):

...然后是否需要在客户端代码中进行其他配置以“教”反应/中继应用程序发出他们的发布/获取请求的路径?

0 投票
1 回答
1371 浏览

pagination - 中继分页:如何初始化“之后”值?

所以基于这里的评论,我已经能够一起破解一个简单的“分页”组件/容器:https ://github.com/facebook/graphql/issues/4#issuecomment-118162627

我说“hack”是因为我就是这么做的。

我通过查看/graphql浏览器响应中的边缘光标来使其工作。问题是..当我没有“事先查询”可以使用时,如何使这项工作适用于项目的第一“页”?

我尝试在查询中离开afterundefined但只收到以下错误:

未捕获的不变违规:callsFromGraphQL():预期变量 $curs 的声明值。

看来,如果您在容器的片段中定义firstafter,那么它们是必需的参数。但是我对 没有任何价值after,那么到底要如何初始化呢?

这个例子抛出了上面的错误:

0 投票
1 回答
943 浏览

reactjs - 具有通量模式的中继缓存?

我真的很想将 Relay 缓存合并到我的 Flux 存储中,这样我就可以进行“时间旅行”并深入了解应用程序。

看起来中继存储和动作都是不可序列化的类,这很糟糕。但看起来我应该能够将缓存与网络请求分开并将缓存保存在 Flux 存储中。

这听起来很有趣还是我在叫错树?

0 投票
1 回答
501 浏览

reactjs - RelayJS:查询任意数据的子组件

我正在构建一个包含许多不同小部件的仪表板。用户可以添加和删除任何小部件,并以他们喜欢的任何顺序放置它们。每个小部件都有自己的数据需求。构建容器层次结构的正确中继方式是什么?

为了提供一些上下文,这是迄今为止的架构:

Widget是一个组件,它接受一个配置对象并相应地渲染相应的组件。

Dashboard组件包含用户添加的许多小部件。

更新

我试图让每一个都ActualWidget成为一个观众的领域。所以架构有点像这样:

然后对于我的Widget容器,我尝试动态插入片段。

那是行不通的。我相信 Relay 静态解析了 QL,因此它无法组成动态片段。然而,这只是我的猜测。

我正在测试RootContainer每个小部件使用的可行性,并将很快更新。

0 投票
0 回答
355 浏览

relayjs - 通过 Relay 中的 GraphQL 突变处理父节点的破坏

我很好奇处理大部分图形可能受到影响的突变的“正确”方法。最好的例子是删除“父”节点导致删除一堆它的孩子。现有的突变配置(FIELDS_CHANGED、NODE_DELETE 等)对于相对简单的操作来说已经足够了,但我不确定处理更复杂的事情的正确方法。

一个具体的例子会有所帮助。假设我们正在开发经典的 Relay 示例应用程序,并且正在使用三种特定类型:ShipFactionUser。让我们假设Ships属于一个Faction(多对一)并且Users有一个favorite_ships连接(多对多)。伪模式可能是这样的:

好吧,酷。我们有一个Faction名为“帝国”的船,它的连接中有一堆船,如“领带战斗机”、“星际驱逐舰”等。然后我们有一个User最喜欢的船只,其中包括“领带战斗机”通过favorite_ships连接。

到目前为止一切都很好。现在一些朋克出现并Faction通过DestroyFactionMutation. 所述突变的输入相当简单:Factionid,但突变对后端的影响很大:

  1. 给定Faction节点被删除
  2. 所有关联的Ship节点也被删除
  3. 所有关联的User { favorite_ship }条目也被删除

因此,我的问题是:如何编写突变有效负载、胖查询和突变配置以使用 Relay 对其进行建模?

想了一会儿,我想大概是这样的:

然后客户端会像这样更新:

  1. 添加一个 NODE_DELETE 配置以删除与Faction对应的节点destroyedFactionId,这是有据可查且直截了当的
  2. 添加一个 NODE_DELETE 配置以删除与该配置相对应的节点ShipdestroyedShipIds但使用什么parentID?您是否需要为每个affectedUserIds.
  3. 如果 #2 不是真的那样工作,也许你可以添加一个 FIELDS_CHANGE 配置,指定user { favorite_ships }可以改变,给定affectedUserIds(也可能通过 REQUIRED_CHILDREN 获取?)

抱歉,如果这是漫无边际且不清楚;希望这种“类型”的突变对于使用 Relay 时间较长的人来说是熟悉的。我可以尝试这些选项,但我想要一些关于这种事情的“最佳”方法的建议。谢谢!

0 投票
2 回答
602 浏览

reactjs - I try to implement a connection using relay and all the node's IDs are the same

I write a really simple schema using graphql, but some how all the IDs in the edges are the same.

I posted the specific detail on github here's the link.

0 投票
1 回答
1774 浏览

reactjs - RelayJS:如何通过道具设置初始变量

假设我有一个 GraphQL 类型Echo,它可以用一些装饰来回显我查询的任何内容。另一方面,我有一个响应message传递给它的 React 组件,其中包含一些由Echo类型决定的装饰。如何设置initialVariables组件Echo

我读到设置 props sets initialVariables,但这不起作用。我试过componentDidMount了,但这也不起作用。

Relay Playground显示消息未正确显示。

对于上下文,

这是用回声解决的类型

0 投票
2 回答
917 浏览

javascript - 什么类型的 Relay mutator 配置适合插入新记录?

我正在研究 GraphQL 和 Relay。到目前为止,对我来说,一切都相对顺利和容易理解。我有一个 GraphQL 模式AccountsTeams. 两者之间还没有任何关系。我对帐户和团队的连接进行了一些特定于 Relay 的 GraphQL 调整。这是这两个连接的示例查询...

我已经准备好创建一个新帐户的 GraphQL 突变。这是那个的 GraphQL 表示...

我现在正在尝试创建使用此 GraphQL 突变的客户端 Relay 突变。不过,我对如何正确执行此操作感到非常困惑。我已经按照示例进行了操作,但我想出的任何内容似乎都无法正确运行。我倾向于得到与片段组合有关的错误。

如果我正在编写一个使用此 GraphQL 突变的 Relay 突变,那么合适的突变器配置是什么?我应该使用RANGE_ADD吗?