- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我是用户,我正在某个任意应用程序上编辑我的个人资料。该应用程序让我进行了一系列更改,完成后,我点击“保存”,我的个人资料就会更新。
在 GraphQL 中处理这样的大型更新的推荐最佳实践是什么?在我看来,有几个选择:
A) 许多小突变 .如果用户更改了 5 项内容(即姓名、电子邮件、用户名、图像、个人简介),则客户端可以向服务器发出 5 次更改。
优点:更小,更孤立的操作。
缺点:这不会违背 GraphQL 中“到服务器的往返行程”的目的,因为它需要...... 5?
B) 很多小的变异,叫服务器端 .与其从客户端调用 5 次变更(需要 5 次往返),您还可以将数据 blob 发布到服务器,并使用一个函数来解析它,并对其找到的数据运行单独的变更。
优点:往返一次
缺点:我们必须向应用程序添加另一个层来处理这个问题。随着时间的推移,新功能会变得困惑、难以测试且难以维护。
C) 一个大突变 .用户通过单个变更将数据 blob 发送到服务器,该变更在文档上批量设置新数据,而不是在每个字段上运行单独的变更。
优点:DX;一个往返。
缺点:由于字段是作为参数传入的,这会导致应用程序受到攻击。恶意用户可以尝试传入任意字段,设置不应更改的字段(即 isAdmin
字段)等。突变必须很聪明才能知道允许更新哪些字段,并拒绝/忽略其余的部分。
我在网上找不到太多关于哪种方式是在 GraphQL 中做这种事情的“正确方式”。希望在这里找到一些答案/反馈。谢谢!
最佳答案
A) Many small mutations. If the user changed 5 things (i.e., name, email, username, image, bio) the client could fire off 5 mutations to the server.
mutation {
setUserName(name: "new_name") { ok }
setUserEmail(email: "new_email") { ok }
}
B) Many small mutations, called server-side. Rather than calling 5 mutations from the client, requiring 5 round trips, you could post a data blob to the server and have a function that parses it, and runs individual mutations on the data it finds.
C) One large mutation. The user sends the data blob to the server via a single mutation, which sets the new data in bulk on the document rather than running individual mutations on each field.
Cons: Since fields are being passed in as arguments, this open the application to attack. A malicious user could try passing in arbitrary fields, setting fields that shouldn't be changed (i.e. an isAdmin field), etc. The mutation would have to be smart to know which fields are allowed to be updated, and reject / ignore the rest.
关于GraphQL:许多小的变异,还是一个大的变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213536/
我有一个包含配对数据的数据集(同一家庭的成员)。 身份证 是个人标识符和 户号是合作伙伴的标识符(反之亦然)。 我需要的是为每个 添加一个额外的列(职业)。 id 他\她的伴侣。 我的数据看起来像这样
mutate 能否根据跨变量应用的逻辑条件创建新变量? 更具体地说,请考虑以下数据。 set.seed(1234) val = 1) head(dat) a b c d anyABCD 1 0 0
我的 df 看起来像这样: df % mutate_at(vars(starts_with("paid")), list(prc = ~. / expenses)) # expenses mon
我的 df 看起来像这样: df % mutate_at(vars(starts_with("paid")), list(prc = ~. / expenses)) # expenses mon
我在这里为项目 Euler 问题 31 运行了这个简单的代码。 不需要 Euler Q;我只想知道,为什么我的列表值会发生变化,即这是打印 [2.0,2.0,2.0,2.0,2.0] 的许多列表的列表
我使用了排列和变异组合来根据分组进行添加。例如,我使用了以下内容: master_df % group_by(asof_dt) %>% mutate(tot_flag = sum(ls_fla
我在让 mutate、cross 和 case_when 正常运行时遇到了一些麻烦,我在这里重新创建了一个简单版本的问题: a 1 1 2 3 2 2
我有代表用户某种交易类型的不规则时间序列数据。每行数据都带有时间戳,表示当时的事务。由于数据的不规则性质,某些用户一天可能有100行,而其他用户一天可能有0或1个事务。 数据可能看起来像这样: dat
您如何恰本地解释为什么这两个示例不同? // Reassignment let a = 1; let b = a; a = 2; console.log(b); // → 1 // Mutation
基本上我想做的是发送一个字符串列表 ex: ["aa","bb","vv"] 到 graphql Mutation 字段中,目前这是我的 Mutation Schema "listTest": &gr
使用 dplyr 进行组均值居中的有效/首选方法是什么,即获取组中的每个元素(mutate)并对其执行操作和汇总统计信息(该组的总结)。以下是使用基本 R 以 mtcars 为中心的组均值: do.c
pcd % arrange(tripNo, procDate, delay) %>% group_by(tripNo) %>% mutate(delayErr = (row_number(
我想知道查询类型后面的字符串有什么意义,在这种情况下是“ProvisionQueues”,似乎从字符串中删除它不会影响任何东西——它只是用于日志记录还是什么。元数据? mutation Provisi
所以,我正在尝试设计我的 Apollo 服务器。我想用一个对象作为参数来创建一个突变。 这是我的架构的一个片段,它以某种方式导致了问题: 我认为它在语法上是正确的,但我遇到了这个错误: {"error
CREATE OR REPLACE TRIGGER UPDATE_TEST_280510 AFTER insert on TEST_TRNCOMPVISIT declare V_TRNCOMPNO N
我有以下带有查询和突变的组件,但我的组件没有收到数据和突变 prop。 我的代码是不是做错了什么或遗漏了什么?虽然查询确实得到执行,但它没有传递下去。 this.props.mutate 和 this
我用 Go 编写了一个客户端应用程序,它需要与服务器端的 C 程序进行交互。客户端执行 AES CFB 加密,服务器解密。不幸的是,服务器端存在重用初始化向量的错误。它尝试根据以下条件进行 3 次解密
我的前端是 localhost:3000 ,我的 GraphQL 服务器是 localhost:3333 . 我已经使用 react-apollo 在 JSX 领域中查询/变异,但还没有从 Expre
我试图改变通常情况下来自 kube-scheduler 的资源“绑定(bind)”。 以下是我的“ValidatingWebhookConfiguration”yaml: apiVersion: ad
如所述here , 这是一个 reference implementation用于 kubernetes e2e 测试的 webhook 服务器。在 main 函数中,定义了一些端点来处理不同的突变请
我是一名优秀的程序员,十分优秀!