GraphQL Mutation 更新数据库中的字段数组

Posted

技术标签:

【中文标题】GraphQL Mutation 更新数据库中的字段数组【英文标题】:GraphQL Mutation to update an array of fields in database 【发布时间】:2020-09-27 13:59:28 【问题描述】:

我正在使用 GraphQL。我们的数据库有 300 多个可用的配置设置。当用户在页面上时,我会显示该页面的配置数据。例如,如果它们在彩色页面上,我会显示 primary_color、success_color、secondary_color、accent_color 等的值。在数据库中,我们基本上有一个 key 字段和一个 value 字段。键将具有“primary_color”,值将是“#FF0000”。这就是所有配置数据保存在数据库中的方式。

当用户点击页面上的保存时,我想保存用户更改的任何字段。是否有可能有一个突变来接受一个对象数组,这些对象的字段在该页面上已更改。所以突变会得到一个像这样的数组: [ 键:“primary_color”,值:“00FF00” ....]。变异会遍历数组中的所有项目并将其保存到数据库中?

我想要一个可以在每个页面上使用的突变来保存用户更改的任何配置值。

【问题讨论】:

【参考方案1】:

使用对象/数组作为“输入类型”的突变没有问题。 [mutation] 解析器可以循环遍历项目以更新数据库。也许您可以使用一些后端细节(集合)来一次更新许多项目。

只需定义您的输入类型以接受成对类型(对象)的数组。

查询数组没有问题。可以查询设置:

 query settings(type: "color") 
   key
   value
 

优化响应大小的一个小问题 - 您不能查询未知的键名来获得像 ["primary_color":"#FF0000", "success_color":"#00FF00"] 这样的响应 - 但是可以使用“自定义 JSON 类型”。

【讨论】:

以上是关于GraphQL Mutation 更新数据库中的字段数组的主要内容,如果未能解决你的问题,请参考以下文章

Graphql Mutation 更新用户数据,但更改密码,注销后无法登录

GraphQL Mutation 使用 Mongoose/MongodB 更新用户关注者 - $set 为空错误

使用函数生成器将值返回到 GraphQL Mutation 中的 outputFields

Sequelize with GraphQl:如何使用突变更新字段

使用 GraphQL 更新数据失败

如何使用 Mongoose Schema 修复 GraphQL Mutation 中的构造函数错误 [重复]