问题标签 [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.
facebook - 我可以在 Facebook Graph API 中查询可选字段吗?
我有用户和 Facebook 页面的 OAuth2 访问令牌,但我的数据库中没有存储类型区别。我希望能够使用相同的 Graph API 查询获取有关用户/页面的基本信息 - 但对于用户,我希望在此基础上获取电子邮件字段。
GET v2.5/me?fields=name,email
// 用户令牌成功。
GET v2.5/me?fields=name,email
// 页面标记错误。
(#100) Tried accessing nonexisting field (email) on node type (Page)
由于我不知道令牌属于用户还是页面,所以我无法,email
轻松地从查询中删除该字段。有什么方法可以指定“可选”email
字段,所以我没有收到上述错误?
,email
PS:目前,如果导致错误,我会进行第二次请求。
graphql - graphql 可以返回聚合计数吗?
Graphql 很棒,我已经开始在我的应用程序中使用它。我有一个显示摘要信息的页面,我需要 graphql 来返回聚合计数?这可以做到吗?
reactjs - “教”客户端用于 graphql 的端点
我正在调整它以在 hapi 服务器的上下文中工作,该服务器还定义了许多其他“常规”api 端点。如果我想以这种方式为 graphql 定义一个端点(类似于 README):
...然后是否需要在客户端代码中进行其他配置以“教”反应/中继应用程序发出他们的发布/获取请求的路径?
pagination - 中继分页:如何初始化“之后”值?
所以基于这里的评论,我已经能够一起破解一个简单的“分页”组件/容器:https ://github.com/facebook/graphql/issues/4#issuecomment-118162627
我说“hack”是因为我就是这么做的。
我通过查看/graphql
浏览器响应中的边缘光标来使其工作。问题是..当我没有“事先查询”可以使用时,如何使这项工作适用于项目的第一“页”?
我尝试在查询中离开after
,undefined
但只收到以下错误:
未捕获的不变违规:callsFromGraphQL():预期变量 $curs 的声明值。
看来,如果您在容器的片段中定义first
和after
,那么它们是必需的参数。但是我对 没有任何价值after
,那么到底要如何初始化呢?
这个例子抛出了上面的错误:
reactjs - 具有通量模式的中继缓存?
我真的很想将 Relay 缓存合并到我的 Flux 存储中,这样我就可以进行“时间旅行”并深入了解应用程序。
看起来中继存储和动作都是不可序列化的类,这很糟糕。但看起来我应该能够将缓存与网络请求分开并将缓存保存在 Flux 存储中。
这听起来很有趣还是我在叫错树?
reactjs - RelayJS:查询任意数据的子组件
我正在构建一个包含许多不同小部件的仪表板。用户可以添加和删除任何小部件,并以他们喜欢的任何顺序放置它们。每个小部件都有自己的数据需求。构建容器层次结构的正确中继方式是什么?
为了提供一些上下文,这是迄今为止的架构:
Widget
是一个组件,它接受一个配置对象并相应地渲染相应的组件。
Dashboard
组件包含用户添加的许多小部件。
更新
我试图让每一个都ActualWidget
成为一个观众的领域。所以架构有点像这样:
然后对于我的Widget
容器,我尝试动态插入片段。
那是行不通的。我相信 Relay 静态解析了 QL,因此它无法组成动态片段。然而,这只是我的猜测。
我正在测试RootContainer
每个小部件使用的可行性,并将很快更新。
relayjs - 通过 Relay 中的 GraphQL 突变处理父节点的破坏
我很好奇处理大部分图形可能受到影响的突变的“正确”方法。最好的例子是删除“父”节点导致删除一堆它的孩子。现有的突变配置(FIELDS_CHANGED、NODE_DELETE 等)对于相对简单的操作来说已经足够了,但我不确定处理更复杂的事情的正确方法。
一个具体的例子会有所帮助。假设我们正在开发经典的 Relay 示例应用程序,并且正在使用三种特定类型:Ship
、Faction
和User
。让我们假设Ships
属于一个Faction
(多对一)并且Users
有一个favorite_ships
连接(多对多)。伪模式可能是这样的:
好吧,酷。我们有一个Faction
名为“帝国”的船,它的连接中有一堆船,如“领带战斗机”、“星际驱逐舰”等。然后我们有一个User
最喜欢的船只,其中包括“领带战斗机”通过favorite_ships
连接。
到目前为止一切都很好。现在一些朋克出现并Faction
通过DestroyFactionMutation
. 所述突变的输入相当简单:Faction
id,但突变对后端的影响很大:
- 给定
Faction
节点被删除 - 所有关联的
Ship
节点也被删除 - 所有关联的
User { favorite_ship }
条目也被删除
因此,我的问题是:如何编写突变有效负载、胖查询和突变配置以使用 Relay 对其进行建模?
想了一会儿,我想大概是这样的:
然后客户端会像这样更新:
- 添加一个 NODE_DELETE 配置以删除与
Faction
对应的节点destroyedFactionId
,这是有据可查且直截了当的 - 添加一个 NODE_DELETE 配置以删除与该配置相对应的节点
Ship
,destroyedShipIds
但使用什么parentID
?您是否需要为每个affectedUserIds
. - 如果 #2 不是真的那样工作,也许你可以添加一个 FIELDS_CHANGE 配置,指定
user { favorite_ships }
可以改变,给定affectedUserIds
(也可能通过 REQUIRED_CHILDREN 获取?)
抱歉,如果这是漫无边际且不清楚;希望这种“类型”的突变对于使用 Relay 时间较长的人来说是熟悉的。我可以尝试这些选项,但我想要一些关于这种事情的“最佳”方法的建议。谢谢!
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.
reactjs - RelayJS:如何通过道具设置初始变量
假设我有一个 GraphQL 类型Echo
,它可以用一些装饰来回显我查询的任何内容。另一方面,我有一个响应message
传递给它的 React 组件,其中包含一些由Echo
类型决定的装饰。如何设置initialVariables
组件Echo
?
我读到设置 props sets initialVariables
,但这不起作用。我试过componentDidMount
了,但这也不起作用。
此Relay Playground显示消息未正确显示。
对于上下文,
这是用回声解决的类型
javascript - 什么类型的 Relay mutator 配置适合插入新记录?
我正在研究 GraphQL 和 Relay。到目前为止,对我来说,一切都相对顺利和容易理解。我有一个 GraphQL 模式Accounts
和Teams
. 两者之间还没有任何关系。我对帐户和团队的连接进行了一些特定于 Relay 的 GraphQL 调整。这是这两个连接的示例查询...
我已经准备好创建一个新帐户的 GraphQL 突变。这是那个的 GraphQL 表示...
我现在正在尝试创建使用此 GraphQL 突变的客户端 Relay 突变。不过,我对如何正确执行此操作感到非常困惑。我已经按照示例进行了操作,但我想出的任何内容似乎都无法正确运行。我倾向于得到与片段组合有关的错误。
如果我正在编写一个使用此 GraphQL 突变的 Relay 突变,那么合适的突变器配置是什么?我应该使用RANGE_ADD
吗?