我在这个问题上打了一个星期,似乎没有什么可以解决的。没有返回数据对象,甚至没有返回“ null”。我正在从正常工作的REST CRUD应用程序转换为GraphQL。没我想的那么容易。
我在Playground中的变异:
mutation createMember($input: MemberInput!) {
createMember (input: $input) {
first_name
last_name
user_name
}
}
下面的操场查询变量:(不在标题部分。)
{
"input": {
"first_name": "John",
"last_name": "Creston",
"user_name": "jc"
}
}
模式:(查询工作正常,成员类型(TypeORM中的实体)可以与它们一起使用,并具有完整的REST CRUD。)
input MemberInput {
first_name: String!
last_name: String!
user_name: String!
}
type Mutation {
createMember(input: MemberInput!): Member!
}
type Query {
getMembers: [Member]
getMember(member_id: Int!): Member!
checkUserName(user_name: String): Member
checkEmail(email: String): Member
}
我没有看到解析器可能是此错误消息的问题,但我将添加Nestjs解析器:
@Mutation('createMember')
async createMember(@Args('input') input: MemberInput): Promise<Members> {
console.log('input in resolver: ', input);
return await this.membersService.addItem(input);
}
该服务可用于REST和查询,因此应该是一个问题。解析器中的console.log永远不会出现在终端中。
通过“复制CURL”按钮:
curl 'http://localhost:3000/graphql' -H 'Accept-Encoding: gzip,
deflate, br' -H 'Content-Type: application/json' -H 'Accept:
application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin:
http://localhost:3000' --data-binary '{"query":"mutation
createMember($input: MemberInput!) {\n createMember (input: $input)
{\n first_name\n middle_initial\n last_name\n
user_name\n pitch\n main_skill_title\n \tskill_id_array\n
skills_comments\n other_skills\n links\n country\n
email\n member_status\n }\n}"}' --compressed
答案 0 :(得分:1)
我遇到了同样的问题,在变量中最后一个参数的末尾有逗号。 gql给了我同样的错误。
更改此项:
{
"input": {
"param1": "val1",
"param2": "val2",
}
}
对此:
{
"input": {
"param1": "val1",
"param2": "val2" // no comma here
}
}
答案 1 :(得分:0)
解释起来有点复杂,但我们可能都已经存在了。我正在尝试不同的“解决方案”,而其中一个的剩余部分意外地留在了JSON数据对象中。完整的对象比上面的简短内容具有更多的属性。数组在JSON中不应为“ []”。昨晚我感到疲惫和绝望。我将解析器更改为上面发布的解析器,但由于JSON中的实验引起了与以前相同的错误,因此无法解决问题。所以我看错地方了。一旦注意到并删除了引号,我的完整对象的数据就会发布到Postgres数据库中。
上面的代码有效。
如果有更多特定的GraphQL错误,那就很好了。我怀疑这是一个很笼统的方法,但是没有帮助。但这并不表示最初的问题出在解析器中,后来没有出现数据输入错误。