我有以下数据模型:
type Job {
// ...
example: String
selections: [Selection!]
// ...
}
type Selection {
...
question: String
...
}
我这样定义我的对象类型:
export const Job = prismaObjectType({
name: 'Job',
definition(t) {
t.prismaFields([
// ...
'example',
{
name: 'selections',
},
// ...
])
},
})
我这样做我的解析器:
t.field('createJob', {
type: 'Job',
args: {
// ...
example: stringArg(),
selections: stringArg(),
// ...
},
resolve: (parent, {
example,
selections
}, ctx) => {
// The resolver where I do a ctx.prisma.createJob and connect/create with example
},
})
所以现在在解析器中,我可以将选择作为 json 字符串接收,然后解析它并使用作业连接/创建。
突变看起来像这样:
mutation {
createJob(
example: "bla"
selections: "ESCAPED JSON HERE"
){
id
}
}
我想知道是否有更优雅的地方可以做类似的事情:
mutation {
createJob(
example: "bla"
selections: {
question: "bla"
}
){
id
}
}
或者
mutation {
createJob(
example: "bla"
selections(data: {
// ...
})
){
id
}
}
我注意到使用nexus-prisma你可以做stringArg({list: true})
,但你不能真正做对象。
我的主要问题是什么是最优雅的方式来进行嵌套突变或将所有内容连接在一起。