gpt4 book ai didi

node.js - GraphQL/Prisma 订阅仅针对 DELETE 触发

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:49 25 4
gpt4 key购买 nike

我已经建立了一个使用 Prisma 的项目来处理与服务器之间的数据通信/存储/检索。它本质上与这里的架构相同example 。唯一的主要区别是我的解析器没有分成不同的文件,它们都驻留在 index.js 中。

现在,我正在尝试实现订阅,它将捕获模型的所有更改。但在我的一生中,除了删除操作之外,我无法让订阅触发任何其他操作。我已阅读多个论坛帖子和示例,但问题仍然存在。

我的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 论坛上发现的任何/所有问题早在三月份就已通过修复解决了。我怀疑这可能与异步棱镜绑定(bind)有关,但这只是直觉。

任何帮助将不胜感激。

谢谢

一个

最佳答案

好的,经过多次尝试和错误后我解决了这个问题。我遵循的初始教程似乎使用了旧版本的 primsagraphql/prisma 图像,需要更新。

要解决此问题,请执行以下操作:

  • 使用较新版本编辑 docker-compose.yml(对我来说,我从 1.12 升级到 1.14)

    服务:
    棱镜:
    图片:prismagraphql/prisma:1.14

  • 使您的 Docker 镜像脱机,然后重新部署它们。对我来说,我很高兴使用以下命令完全杀死它们,但是如果您想保存数据,您可能需要找到一组不同的命令来执行此操作

    docker-compose 杀死
    docker-compose 下来
    docker-compose up -d

让您新部署的 Docker 镜像预热一下。由于某种原因,我的需要几秒钟才能醒来:P。之后,您应该会发现您的订阅将再次按预期工作。

希望这对其他人有帮助,我真的花了一段时间才弄清楚我需要更新我的 Docker 镜像而不是我的 prisma npm 版本。

干杯,

一个

关于node.js - GraphQL/Prisma 订阅仅针对 DELETE 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51890993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com