如何在节点应用程序中使用 prisma graphql 订阅
How to use a prisma graphql subscription in node app
我正在关注 this guide。我正在尝试在我的节点应用程序中收听 graphQL 订阅。我在实施该订阅时遇到了很多麻烦。我尝试了几种不同的方法,如下所列,其中 none 有效。
// converted to rxjs observables
from(PrismaClient.$subscribe.priority({
mutation_in: "CREATED"
})).subscribe(
(next) => {
console.log("next", next);
},
() => {
console.log("error");
},
() => {
console.log("complete");
}
);
// as promise
PrismaClient.$subscribe.priority({
mutation_in: "CREATED"
}).then(
(next) => {
console.log("next", next);
}
);
这两个只是 return 下一个:
{ next: [Function: next],
return: [Function: return],
throw: [Function: throw],
'@@asyncIterator': [Function] }
我希望它 return 任何时候创建新的 priority
。但是,它只 return 一次并立即完成并且 return 我上面列出的那个对象。
我知道这与它有关 return 回复 Promise<AsyncIterator<...>>
,但我不确定如何解决这个问题。
如何使用 prisma-client
在节点应用程序中创建 prisma graphql 订阅?我也想将其转换为 rxjs
而不是使用 promises
。我只喜欢 Observables
.
这是关于 Promises 和 async/await 的建议:
const main = async () => {
const subscription = await PrismaClient.$subscribe.priority({
mutation_in: 'CREATED',
})
handleSubscription(subscription)
}
const handleSubscription = async (subscription) => {
const result = await subscription.next()
console.log('do stuff with', result.value)
if (!result.done) {
console.log('handle again')
handleSubscription(subscription)
}
else {
console.log('done')
}
}
main().catch(e => console.error(e))
我正在关注 this guide。我正在尝试在我的节点应用程序中收听 graphQL 订阅。我在实施该订阅时遇到了很多麻烦。我尝试了几种不同的方法,如下所列,其中 none 有效。
// converted to rxjs observables
from(PrismaClient.$subscribe.priority({
mutation_in: "CREATED"
})).subscribe(
(next) => {
console.log("next", next);
},
() => {
console.log("error");
},
() => {
console.log("complete");
}
);
// as promise
PrismaClient.$subscribe.priority({
mutation_in: "CREATED"
}).then(
(next) => {
console.log("next", next);
}
);
这两个只是 return 下一个:
{ next: [Function: next],
return: [Function: return],
throw: [Function: throw],
'@@asyncIterator': [Function] }
我希望它 return 任何时候创建新的 priority
。但是,它只 return 一次并立即完成并且 return 我上面列出的那个对象。
我知道这与它有关 return 回复 Promise<AsyncIterator<...>>
,但我不确定如何解决这个问题。
如何使用 prisma-client
在节点应用程序中创建 prisma graphql 订阅?我也想将其转换为 rxjs
而不是使用 promises
。我只喜欢 Observables
.
这是关于 Promises 和 async/await 的建议:
const main = async () => {
const subscription = await PrismaClient.$subscribe.priority({
mutation_in: 'CREATED',
})
handleSubscription(subscription)
}
const handleSubscription = async (subscription) => {
const result = await subscription.next()
console.log('do stuff with', result.value)
if (!result.done) {
console.log('handle again')
handleSubscription(subscription)
}
else {
console.log('done')
}
}
main().catch(e => console.error(e))