GraphQL订阅错误:";该\";属性\“;参数的类型必须为数组。接收类型对象“;

GraphQL订阅错误:";该\";属性\“;参数的类型必须为数组。接收类型对象“;,graphql,graphql-js,graphql-subscriptions,Graphql,Graphql Js,Graphql Subscriptions,我试图用GraphQL实现一个简单的API。我的查询和我的突变已经就位并起作用了,但现在我也在尝试包括订阅 我已经在模式中添加了订阅,我在addUser中包含了事件发布,并为订阅类型定义了订阅函数 现在,当我试图在浏览器IDE中的graphiql中运行订阅查询时,出现以下错误: “properties”参数的类型必须为Array。接收的类型为object” 附加的是模式对象。我是配置错误还是遗漏了什么?谢谢 另外,我还需要提到的是,我正在使用mongoose将数据存储在mongo实例上,从而存储

我试图用GraphQL实现一个简单的API。我的查询和我的突变已经就位并起作用了,但现在我也在尝试包括订阅

我已经在模式中添加了订阅,我在
addUser
中包含了事件发布,并为订阅类型定义了订阅函数

现在,当我试图在浏览器IDE中的
graphiql
中运行订阅查询时,出现以下错误:

“properties”参数的类型必须为Array。接收的类型为object”

附加的是模式对象。我是配置错误还是遗漏了什么?谢谢

另外,我还需要提到的是,我正在使用mongoose将数据存储在mongo实例上,从而存储实体

导入{
GraphQLFloat,
GraphQLID,
GraphQLInt,
图表列表,
GraphQLNonNull,
GraphQLObjectType,
图形模式,
图形字符串
}来自“graphql”;
//模型
从“../types/user/UserType”导入UserType;
从“../types/account/AccountType”导入AccountType;
从“../types/transaction/transaction-type”导入TransactionType;
//实体
从“../entities/User/User”导入用户;
从“../entities/Account/Account”导入帐户;
从“../entities/Transaction/Transaction”导入事务;
//订阅
从“graphql订阅”导入{PubSub};
//订阅
const pubsub=新的pubsub();
const USER_CREATED='USER_CREATED';
//图的可接受起点
const RootQueryType=新的GraphQLObjectType({
名称:“RootQueryType”,
字段:()=>({
//查询数据库中的单个实体
用户:{
类型:UserType,
description:'由id标识的当前用户',
args:{
身份证:{
类型:GraphQLID
}
},
解析(父级,参数){
返回User.findById(args.id);
}
},
账户:{
类型:AccountType,
description:'由id标识的有关帐户的详细信息',
args:{
身份证:{
类型:GraphQLID
}
},
解析(父级,参数){
返回帐户.findById(args.id);
}
},
交易:{
类型:TransactionType,
description:'由id标识的有关交易的详细信息',
args:{
身份证:{
类型:GraphQLID
}
},
解析(父级,参数){
返回事务.findById(args.id);
}
},
//查询数据库中的所有实体
用户:{
类型:新的GraphQList(用户类型),
解析:(父级,参数)=>{
返回User.find({});
}
},
账户:{
类型:新的GraphQList(AccountType),
解析:(父级,参数)=>{
返回帐户。查找({});
}
},
交易:{
类型:新的GraphQList(TransactionType),
解析(父级,参数){
返回事务。查找({});
}
}
})
});
常量MutationType=新的GraphQLObjectType({
名称:'突变',
字段:()=>({
地址用户:{
类型:UserType,
args:{
姓名:{
类型:新GraphQLNonNull(GraphQLString)
},
年龄:{
类型:新GraphQLNonNull(GraphQLInt)
},
电邮:{
类型:新GraphQLNonNull(GraphQLString)
}
},
解析(父级,参数){
让用户=新用户({
名称:args.name,
年龄:args.age,
电子邮件:args.email
});
pubsub.publish(已创建用户){
新用户:用户
});
返回user.save();
}
},
地址帐户:{
类型:AccountType,
args:{
货币:{
类型:新GraphQLNonNull(GraphQLString)
},
余额:{
类型:新GraphQLNonNull(GraphQLFloat)
},
霍尔德里德:{
类型:新GraphQLNonNull(GraphQLString)
}
},
解析(父级,参数){
let account=新帐户({
货币:args.currency,
余额:args.balance,
holderId:args.holderId
});
返回account.save(),然后(()=>console.log('user created');
}
},
添加事务:{
类型:TransactionType,
args:{
sourceAccountId:{
类型:新GraphQLNonNull(GraphQLString)
},
目标帐户:{
类型:新GraphQLNonNull(GraphQLString)
},
金额:{
类型:新GraphQLNonNull(GraphQLFloat)
}
},
解析(父级,参数){
let事务=新事务({
sourceAccountId:args.sourceAccountId,
tagetAccountId:args.tagetAccountId,
时间戳:新日期(),
金额:args.amount
});
Account.findById(args.sourceAccountId,(err,Account)=>{
如果(!err){
account.balance-=参数金额;
return account.save();
}
});