node.js - 订阅字段必须返回 Async Iterable。收到:未定义
问题描述
我将 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;
解决方案
我必须为 subs 定义使用 subccribe 关键字。谢谢我。订阅 :{ userNotifications : withFilter( subccribe: ()=>pubSub.asyncIterator(NEW_NOTIFICATION_CREATE), (payload, variables)=>{ console.log("payload=>", payload); console.log("variables=>" , 变量); 返回真 } )}}
推荐阅读
- angular - RXJS 错误类型错误:“this._subscribe 不是函数”
- javascript - 关于过滤 html 元素中的文本的 JavaScript 问题
- php - php - 从 ftp 服务器下载大文件并限制下载速度
- module - jq中调用自定义模块的格式是什么?
- javascript - 第二个 $.ajax 调用被跳过
- python - curl 到 python 请求错误:“没有提供 api 密钥”
- c++ - 优化 .txt 文件创建速度
- string - 将字符串转换为 bytes32 以用于solidity合约调用
- arrays - 有没有更好的方法来过滤具有多个条件的数组
- python - 解析不完整的json数组