GraphQL 错误:必须提供名称
Posted
技术标签:
【中文标题】GraphQL 错误:必须提供名称【英文标题】:GraphQL Error : Must provide name 【发布时间】:2019-01-11 23:06:39 【问题描述】:我正在为 NodeJS 中的登录用户编写突变。
它给出错误“必须提供名称”。
这是浏览器 GraphQL 查询:
mutation
login(username:"dfgdfg",password:"test1234")
_id,
name
fname,
lname,
mname
这是我的代码
const login =
type: UserType,
args:
input:
name:'Input',
type: new GraphQLNonNull(new GraphQLObjectType(
username:
name:'Username',
type: new GraphQLNonNull(GraphQLString)
,
password:
name:'Password',
type: new GraphQLNonNull(GraphQLString)
))
,
resolve: async (_, input, context) =>
let errors = [];
return UserModel.findById("5b5c34a52092182f26e92a0b").exec();
module.exports = login;
谁能帮我看看为什么会出错?
提前致谢。
【问题讨论】:
你能显示你的突变或来自浏览器的查询吗 我更新了问题并提出了graphQL浏览器变异查询。请检查。 尝试在输入参数而不是突变login
函数参数中传递name
,并且突变应该是这样的mutation login(input: $input) _id, name fname, lname, mname
【参考方案1】:
描述错误发生在哪里也很有帮助。我假设它在您启动节点服务器时被抛出。
抛出此特定错误是因为您在对象配置的第 8 行中缺少 name
属性。这个类型也需要是GraphQLInputObjectType
not GraphQLObjectType
。
args:
input:
type: new GraphQLNonNull(new GraphQLInputObjectType(
name: 'LoginInput',
fields:
username:
name:'Username',
type: new GraphQLNonNull(GraphQLString)
,
password:
name:'Password',
type: new GraphQLNonNull(GraphQLString)
))
,
您的代码中还有很多问题:
您的代码中未使用所有 name
属性(您可能添加它们试图修复错误)。
您的查询与架构定义不匹配,要么直接在字段上而不是在额外的输入类型中包含两个参数 username
和 password
:
args:
username:
name:'Username',
type: new GraphQLNonNull(GraphQLString)
,
password:
name:'Password',
type: new GraphQLNonNull(GraphQLString)
,
或者按照 Anthony 的描述采用您的查询:
mutation
login(input: username: "dfgdfg",password: "test1234" )
_id,
name
fname,
lname,
mname
【讨论】:
以上是关于GraphQL 错误:必须提供名称的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL 错误“字段必须是以字段名称作为键的对象或返回此类对象的函数。”