我对 GraphQL 很陌生,正在成为一个超级粉丝 :)
但是,我不清楚。我正在使用 Prisma 和 GraphQL-Yoga 和 Prisma 绑定。
我不知道如何将参数从我的 graphQL 服务器传递到子属性。不知道这是否清楚,但我会用代码显示它,希望更容易:)
这些是我的类型
type User {
id: ID! @unique
name: String!
posts: [Post!]!
}
type Post {
id: ID! @unique
title: String!
content: String!
published: Boolean! @default(value: "false")
author: User!
}
我的 schema.graphql
type Query {
hello: String
posts(searchString: String): [Post]
users(searchString: String, searchPostsTitle: String): [User]
me(id: ID): User
}
和我的用户解析器:
import { Context } from "../../utils";
export const user = {
hello: () => "world",
users: (parent, args, ctx: Context, info) => {
return ctx.db.query.users(
{
where: {
OR: [
{
name_contains: args.searchString
},
{
posts_some: { title_contains: args.searchPostsTitle }
}
]
}
},
info
);
},
me: (parent, args, ctx: Context, info) => {
console.log("parent", parent);
console.log("args", args);
console.log("info", info);
console.log("end_________________");
return ctx.db.query.user({ where: { id: args.id } }, info);
}
};
和我的帖子解析器
import { Context } from "../../utils";
export const post = {
posts: (parent, args, ctx: Context, info) => {
return ctx.db.query.posts(
{
where: {
OR: [
{
title_contains: args.searchString
},
{
content_contains: args.searchString
}
]
}
},
info
);
}
};
所以,现在:)
当我在我的 prisma 服务上的 GraphQL 操场上时,我可以执行以下操作:
{
user(where: {id: "cjhrx5kaplbu50b751a3at99d"}) {
id
name
posts(first: 1, after: "cjhweuosv5nsq0b75yc18wb2v") {
id
title
content
}
}
}
但我不能在服务器上做,如果我做这样的事情..我收到错误:
"error": "Response not successful: Received status code 400"
这就是我正在尝试的:
{
me(id: "cjhrx5kaplbu50b751a3at99d") {
id
name
posts(first:1) {
id
title
content
}
}
}
有人知道我该怎么做吗?