Я создал проект с использованием Prisma для управления передачей / хранением / извлечением данных на сервер и с сервера. По сути, это та же архитектура, что и в примере. Единственное существенное отличие состоит в том, что мои преобразователи не разделены на разные файлы, они все находятся в index.js.
Теперь я пытаюсь реализовать подписки, которые будут улавливать все изменения в моих моделях. Но, хоть убей, я не могу заставить подписку срабатывать для чего-либо, кроме действий DELETE. Я прочитал несколько сообщений и примеров на форуме, но проблема не устранена.
Мои преобразователи подписок index.js выглядят следующим образом:
Subscription: {
userChanges: {
subscribe: (_, args, context, info) => {
console.log("CHECKCHECK");
return context.prisma.subscription.user(
{ where: { mutation_in: ['CREATED'] } },
info
)
}
},
taskChanges: {
subscribe: async (_, args, context, info) => {
return await context.prisma.subscription.task({}, info)
}
}
}
Моя schema.graphql выглядит так:
# import Task, User from '../generated/prisma.graphql'
# import TaskSubscriptionPayload, UserSubscriptionPayload from '../generated/prisma.graphql'
type Query {
task(id: ID!): Task
tasks: [Task]!
user(id: ID!): User
users: [User!]
getUserTasks(id:ID!): [Task]!
}
type Mutation {
addTask(
name: String!,
priority: Float!,
weight: Int!,
best: Float!,
expected: Float!,
worst: Float!,
calculated: Float!,
stdDev: Float!,
actualTime: Float,
tags: [String!]!,
ownedBy: ID!
): Task!
updateTask(
id: ID!,
name: String!,
priority: Float!,
weight: Int!,
best: Float!,
expected: Float!,
worst: Float!,
calculated: Float!,
stdDev: Float!,
actualTime: Float,
tags: [String!]!,
ownedBy: ID!
): Task!
deleteTask(id: ID!): Task!
addNewUser(name: String!): User!
deleteUser(id:ID!): User!
}
type Subscription {
taskChanges: TaskSubscriptionPayload
userChanges: UserSubscriptionPayload
}
Мне, должно быть, чего-то не хватает, потому что все проблемы, которые я нахожу на форумах Prisma, были решены исправлениями еще в марте. Я подозреваю, что это может быть связано с привязкой асинхронной призмы, но это всего лишь интуиция.
Любая помощь приветствуется.
Спасибо,
A
graphql-yoga
иprisma-binding
) или в базовой службе Prisma. Вы можете проверить это, открыв Playground для Prisma API и протестировав подпискуuser
прямо там (вместо тестирования своихtaskChanges
иuserChanges
подписок на уровне приложения). - person nburk   schedule 17.08.2018