如何在graphql.js中实现订阅?
这是一个非常简单的问题 如何在graphql中实现订阅? 我特别要求在使用如何在graphql.js中实现订阅?,graphql,graphql-js,graphql-subscriptions,Graphql,Graphql Js,Graphql Subscriptions,这是一个非常简单的问题 如何在graphql中实现订阅? 我特别要求在使用graphql.js构造函数时使用以下内容 我找不到干净/简单的实现 还有一个,但它涉及到relay.js——我不想不必要地增加我的应用程序中外部依赖项的数量 我所拥有的: module.exports = function (database){ return new GraphQLSchema( { query: RootQuery(database) , mutation: RootMutatio
graphql.js
构造函数时使用以下内容
我找不到干净/简单的实现
还有一个,但它涉及到relay.js
——我不想不必要地增加我的应用程序中外部依赖项的数量
我所拥有的:
module.exports = function (database){
return new GraphQLSchema(
{ query: RootQuery(database)
, mutation: RootMutation(database)
, subscription: RootSubscription(database) -- i can see this in graphiql - see below
}
);
}
我了解到我需要一个subscribe()
,它必须从中返回迭代器
这是一个简单的异步迭代器。这个迭代器所做的就是每2秒增加并返回计数器。当它达到10时停止
function simpleIterator(){
return {
[ Symbol.asyncIterator ]: () => {
let i = 0
return {
next: async function(){
i++
await delay(2000)
if(i > 10){
return { done: true }
}
return {
value: i,
done: false
}
}
}
}
}
}
运行graphiql订阅时,由于某些原因,它返回null:
我正在拼凑来自多个来源的代码——基本上是浪费时间和进行黑客攻击。你能帮我弄清楚这个吗?
订阅是一项如此重要的功能,它们在哪里有适当的文档记录?例如,复制粘贴式查询的代码片段在哪里
此外,我不能使用模式与文件分离的示例—作为字符串/从文件中分离。我已经将模式创建为javascript构造函数。现在,由于我试图添加订阅,我不能仅仅返回到使用模式作为字符串。需要重写整个项目。或者我真的可以两者兼得吗?谢谢:)
function simpleIterator(){
return {
[ Symbol.asyncIterator ]: () => {
let i = 0
return {
next: async function(){
i++
await delay(2000)
if(i > 10){
return { done: true }
}
return {
value: i,
done: false
}
}
}
}
}
}