我正在使用一堆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
帮助进行突变 . 查看该库的源代码,看起来它只是用于解析查询和类型 .我认为一个更清洁的方法只是做这样的事情:
我在这里避免使用
update()
因为它只返回受影响的字段 . 如果您决定扩展变异返回的字段,这样您就会返回整个用户对象并避免为某些字段返回null .