1

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

有人知道我该怎么做吗?

4

1 回答 1

1

因为我有一个自定义类型的用户,帖子没有像生成的那样的参数。我要么使用生成的,要么将其修改为如下所示:

type User {
  id: ID!
  name: String!
  posts(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Post!]
}

编辑 2018 年 6 月 4 日

# import Post from './generated/prisma.graphql'

type Query {
  hello: String
  posts(searchString: String): [Post]
  users(searchString: String, where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]
  me(id: ID): User
}

type Mutation {
  createUser(name: String!): User
  createPost(
    title: String!
    content: String!
    published: Boolean!
    userId: ID!
  ): Post
}

我手动从 prisma.graphql 复制了参数。

于 2018-06-02T15:02:58.807 回答