Я должен ограничиться тем, что пользователь может отправить только один отзыв на продукт.У меня есть следующий дизайн для неограниченной ситуации.
К сожалению, в настоящее время это невозможно с Prisma.Уже существует запрос открытой функции , запрашивающий эту функцию, пожалуйста, оставьте свой ? в вопросе!
Чтобы получить эту функцию в своем приложении, вам нужно будет включить это ограничение вручную наприкладной уровень (например, express, apollo-server или graphql-yoga).
Вы можете взглянуть на эту страницу как в GraphQL, где есть аналогичная ситуация с User
, Link
и Vote
типы.Вот как решатель для создания Vote
и не получает голосов от того пользователя, который уже существует, реализован с помощью Graphql-Yoga:
async function vote(parent, args, context, info) {
// 1
const userId = getUserId(context)
// 2
const linkExists = await context.db.exists.Vote({
user: { id: userId },
link: { id: args.linkId },
})
if (linkExists) {
throw new Error(`Already voted for link: ${args.linkId}`)
}
// 3
return context.db.mutation.createVote(
{
data: {
user: { connect: { id: userId } },
link: { connect: { id: args.linkId } },
},
},
info,
)
}