Я стараюсь понять призму и graphql и застрял со следующей проблемой.
Предположим, у нас есть типов
type Queue {
id: ID! @id
title: String!
slips: [Slip!]!
}
type Slip {
id: ID! @id
queue: Queue!
user: User!
position: Int! // << calculate this & subscribe to Slip
}
type User {
id: ID! @id
name: String!
slips: [Slip!]!
}
Во-первых,когда запрашивает отношение скольжения или скольжения для поля 'position', я хочу вычислить позицию определенного слипа внутри массива слипов очереди .
В лучшем случае сервер nodejs должен каким-то образом подписаться на все очереди , чтобы иметь все текущие массивы скольжения очереди в качестве состояния для быстрого расчета.Это возможно?
Я пытался использовать фрагменты, но я не могу использовать это как fragment: "fragment queueId on Slip { Queue: id }"
. Есть ли способ сделать это с фрагментами?
const Slip = {
position: {
fragment: "fragment slipId on Slip { id }",
async resolve(parent, { id }, { prisma, request }, info) {
const userId = getUserId(request)
// following ---does not work---
const queue = await prisma.bindings.query.queues(
{
where: {
slips: { slips_some: { id: parent.queue } }
}
},
info
)
const index = queue.slips.indexOf(id)
return index
}
}
}
Тогда также, если я хочу подписаться на квитанцию , чтобы получить информацию, когда моя позиция меняется , как можно ли подписаться на Prisma Slip и подписаться на Массив слипов очереди одновременно?
Настроить базовые запросы и мутации очень просто, однако, занимаясь дополнительными вычислениями на стороне nodejs, я не уверен, как получить больше документации прямо сейчас.Я использую призменные привязки для удобного реляционного запроса полей.
Возможно, я подхожу к проблеме с неправильной стороны.Пожалуйста помогите мне понять, как подойти к этому с призмой, это высоко ценится .
Спасибо
РЕДАКТИРОВАТЬ:
поэтому для реляционного поля position
Я был на правильном пути с фрагментами: fragment: "fragment slipId on Slip { id queue { id }}"
, который творит волшебство.Однако, когда я пытаюсь применить фрагмент к подписке, родительский аргумент имеет вид undefined
:
slip: {
fragment: "fragment slipId on Slip { id queue { id }}",
subscribe(parent, { queueId }, { prisma, request }, info) {
getUserId(request)
console.log('parent', parent)
return prisma.bindings.subscription.slip(
{ where: { node: { queue: { id: queueId } } } },
info
)
}
Может кто-нибудь помочь мне, как реализовать фрагменты с подпиской на призменных привязках?