Я новичок в 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.info("parent", parent);
console.info("args", args);
console.info("info", info);
console.info("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
);
}
};
а сейчас :)
Находясь на игровой площадке GraphQL в моем сервисе prisma, я могу делать следующее:
{
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
}
}
}
кто-нибудь знает, как я мог это сделать?


поскольку у меня есть пользовательский тип пользователя, сообщения не имеют таких параметров, как сгенерированный. Либо я использую сгенерированный, либо изменяю его так:
type User {
id: ID!
name: String!
posts(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Post!]
}
ИЗМЕНИТЬ 2018 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 вручную.
Можете ли вы также поделиться новым schema.graphql? Вам нужно импортировать типы из новых аргументов :)
Да! Обратите внимание, что UserWhereInput, UserOrderByInput и User импортируются «транзитивно» из оператора import Post в первом залоге :)
хорошо .. я решил это :) иногда нужно просто подумать, когда писать и объяснять здесь .. я оставлю вопрос другим людям, у которых есть такая же проблема ..