【发布时间】:2018-11-02 23:27:15
【问题描述】:
我正在尝试找出 GraphQL 中的级联删除。
我正在尝试删除Question 类型的节点,但QuestionVote 类型与Question 具有必需的关系。我正在寻找一种方法来一次删除 Question 及其所有投票。
删除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,
)
}
谢谢!
【问题讨论】:
标签: graphql cascading-deletes prisma