gpt4 book ai didi

node.js - GraphQL 错误 : Must provide name

转载 作者:可可西里 更新时间:2023-11-01 10:01:57 25 4
gpt4 key购买 nike

我正在编写用于在 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;

谁能帮我弄清楚为什么会出错?

提前致谢。

最佳答案

描述错误发生的位置也非常有帮助。我假设它是在您启动 Node 服务器时抛出的。

抛出此特定错误是因为您缺少对象配置第 8 行中的 name 属性。此外,此类型必须是 GraphQLInputObjectType 而不是 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 属性(您添加它们可能是为了修复错误)。

您的查询与架构定义不匹配,要么直接在字段中使用两个参数 usernamepassword,而不是在额外的输入类型中:

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
}
}
}

关于node.js - GraphQL 错误 : Must provide name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51683057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com