订阅字段必须返回 Async Iterable。收到:未定义
Posted
技术标签:
【中文标题】订阅字段必须返回 Async Iterable。收到:未定义【英文标题】:Subscription field must return Async Iterable. Received: undefined 【发布时间】:2021-07-06 14:28:44 【问题描述】:我将 graphql nodejs 与 apollo-server 一起使用。 当我尝试时,我得到了这个错误:
我已经在解析器中返回了 pubsub.asyncIterator。 它返回错误。另一个项目相同的设置工作,但它不工作。我在这里检查了一些堆栈问题,但我无法解决。
服务器: App.js
const express = require('express');
const mongoose = require('mongoose');
const ApolloServer = require('apollo-server');
const mainSchema = require('./graphql/schemas/index');
const rootResolver = require('./graphql/resolvers/index');
const app = express();
const server = new ApolloServer(
typeDefs: mainSchema,
resolvers: rootResolver,
subscriptions:
path: `/graphql`,
onConnect: (connectionParams, webSocket, context) =>
console.log('Client connected');
,
onDisconnect: (webSocket, context) =>
console.log('Client disconnected')
,
,
);
server.listen(3000, "192.168.1.106").then(( url ) =>
console.log(`???? Server ready at $url`);
);
订阅解析器
Subscription :
userNotifications : withFilter(
()=>pubSub.asyncIterator(NEW_NOTIFICATION_CREATE),
(payload, variables)=>
console.log("payload=>", payload);
console.log("variables=>", variables);
return true
)
PubSub.js
const PubSub = require('graphql-subscriptions')
const pubSub =new PubSub()
exports.pubSub = pubSub;
【问题讨论】:
【参考方案1】:我必须使用 subccribe 关键字来定义 subs。谢谢我。 订阅: 用户通知:withFilter( 订阅:()=>pubSub.asyncIterator(NEW_NOTIFICATION_CREATE), (有效载荷,变量)=> console.log("payload=>", 有效载荷); console.log("variables=>", variables); 返回真 )
【讨论】:
以上是关于订阅字段必须返回 Async Iterable。收到:未定义的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS2 学习笔记5 Async Data Binding
使用 Graphql 在 NestJS 上订阅时,“不能为不可为空的字段返回 null”