我试图找出 GraphQL 中的级联删除。
我正在尝试删除 type 的节点Question
,但 typeQuestionVote
与Question
. 我正在寻找一种方法来Question
一次删除 a 及其所有投票。
用于删除 a 的突变Question
:
type Mutation {
deleteQuestion(where: QuestionWhereUniqueInput!): Question!
}
及其解析器(我正在使用 Prisma):
function deleteQuestion(parent, args, context, info) {
const userId = getUserId(context)
return context.db.mutation.deleteQuestion(
{
where: {id: args.id}
},
info,
)
}
如何修改该突变以同时删除相关QuestionVote
节点?或者我应该添加一个单独的突变来删除一个或多个QuestionVote
?
如果它很重要,这里是创建Question
和的突变QuestionVote
:
function createQuestion(parent, args, context, info) {
const userId = getUserId(context)
return context.db.mutation.createQuestion(
{
data: {
content: args.content,
postedBy: { connect: { id: userId } },
},
},
info,
)
}
async function voteOnQuestion(parent, args, context, info) {
const userId = getUserId(context)
const questionExists = await context.db.exists.QuestionVote({
user: { id: userId },
question: { id: args.questionId },
})
if (questionExists) {
throw new Error(`Already voted for question: ${args.questionId}`)
}
return context.db.mutation.createQuestionVote(
{
data: {
user: { connect: { id: userId } },
question: { connect: { id: args.questionId } },
},
},
info,
)
}
谢谢!