Piy*_*sal 3 mongodb node.js graphql express-graphql
我正在编写用于在 NodeJS 中登录用户的突变。
它给出错误“必须提供名称”。
这是浏览器 GraphQL 查询:
mutation{
login(username:"dfgdfg",password:"test1234") {
_id,
name{
fname,
lname,
mname
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
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;
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决为什么会出现错误吗?
提前致谢。
描述错误发生的位置也非常有帮助。我假设它是在启动节点服务器时抛出的。
抛出此特定错误是因为您缺少name对象配置第 8 行中的属性。而且这种类型也不能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)
}
}
}))
}
},
Run Code Online (Sandbox Code Playgroud)
您的代码中还有很多问题:
您的代码中未使用所有name属性(您可能添加它们是为了修复错误)。
您的查询与架构定义不匹配,要么有两个参数username,要么password直接在字段上,而不是在额外的输入类型中:
args: {
username:{
name:'Username',
type: new GraphQLNonNull(GraphQLString)
},
password:{
name:'Password',
type: new GraphQLNonNull(GraphQLString)
}
},
Run Code Online (Sandbox Code Playgroud)
或者按照安东尼的描述采用您的查询:
mutation{
login(input: { username: "dfgdfg",password: "test1234" }) {
_id,
name{
fname,
lname,
mname
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3010 次 |
| 最近记录: |