Sequelize with GraphQl:如何使用突变更新字段
Posted
技术标签:
【中文标题】Sequelize with GraphQl:如何使用突变更新字段【英文标题】:Sequelize with GraphQl: How to update fields using mutation 【发布时间】:2018-01-08 02:55:13 【问题描述】:我正在使用一堆 koa2、sequelize 和 graphql。我不想使用 graphql 突变更改用户模型的状态字段并返回更改后的对象。
目前我的变异如下所示:
mutation: new GraphQLObjectType(
name: 'Mutation',
fields:
setState:
type: userType,
args:
input:
type: userStateInputType
,
resolve: resolver(db.user,
before: async (findOptions, input) =>
const uuid, state = input;
await db.user.update(
state,
where: uuid
);
findOptions.where =
uuid
;
return findOptions;
)
)
这就是相应的查询:
mutation setstate
setState(input: uuid: "..UUID..", state: "STATE")
uuid
state
它正在工作,但我很确定有更好的解决方案。
【问题讨论】:
【参考方案1】:我会避免尝试使用 graphql-sequelize 的 resolver
助手进行突变。查看该库的源代码,看起来它实际上仅用于解析查询和类型。
我认为一个更清洁的方法就是做这样的事情:
resolve: async (obj, input: uuid, state ) =>
const user = await db.user.findById(uuid)
user.set('state', state)
return user.save()
我在这里避免使用update()
,因为它只会返回受影响的字段。如果您决定扩展突变返回的字段,这样您将返回整个用户对象并避免为某些字段返回 null。
【讨论】:
以上是关于Sequelize with GraphQl:如何使用突变更新字段的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jest、Graphql 和 Sequelize 测试数据库时如何避免 EADDRINUSE
如何使用 sequelize 从 graphql 中的映射表中访问数据
使用 Sequelize 在 GraphQL 查询中将日期时间字段输出为字符串
GraphQl,Sequelize-CLi,模型捆绑器 - sequelize.import 不是函数