Вопросы с тегами [graphql]

1

голосов
1

ответ
78

Просмотры

Какой graphql-весна-загрузка-стартер я должен выбрать?

Я думал о добавлении GraphQL функциональных возможностей моего приложения Spring загрузки. Я нашел, что есть два артефактов для этого. Одним из них является com.graphql-ява-Кикстарт: graphql-весна-загрузки-стартер, а другой com.graphql-Java: graphql-весна-загрузки-стартер. Какой я должен выбрать?
Jin Kwon
0

голосов
0

ответ
4

Просмотры

подписка на Java graphQL для IBM MQ Темы

Я новичок в graphQL и пытаюсь создать подписку на тему MQ. Я хочу на основе событий обновления, всякий раз, когда я получаю сообщение graphQL API должен закачает и показать обновления. Все указатели будут полезны для понимания подписок с JMS. Спасибо
Priya Tanwar
1

голосов
2

ответ
37

Просмотры

Use GraphQL to retrieve an object that contains an array of objects with different schemas

I am trying to write a query to retrieve an object with the property linkedCards that contains an array of objects with different schemas. I have 3 different schemas (built in Contentful): CardA example: { id: 42, productName: 'Laptop', price: 999 } CardB example: { id: 999, title: 'Buy our refurbished Laptops today!' } CardC example: { id: 100, linkedCards: [ { id: 42, productName: 'Laptop', price: 999 }, { id: 999, title: 'Buy our refurbished Laptops today!' } ] } Query: allCardC() { nodes { linkedCards { id title } } } When I try to run the following GraphQL query I get "Cannot query field "title" on type "CardACardBUnion". Did you mean to use an inline fragment on "CardA" or "CardB"?" Is there a built-in way to do this or can I use the ids of CardA & CardB somehow? Perhaps have one query to get the ids of the cards in linkedCards and another query to get said cards?
0

голосов
0

ответ
75

Просмотры

AWS Amplify Connect не возвращает данные

У меня есть очень простой сервер GraphQL, который возвращает «Hello World», если запрашиваются с {} Привет Я настроен Amplify с конечной точкой GraphQL и области и проверить, что соединение работает с этим сниппет: ** ЭТО РАБОТАЕТ ** импорт {API , graphqlOperation} от 'AWS-амплификации' константные ListEvents = `запроса {Привет}` асинхронной getNote () {попытаться {Const результат = ждут API.graphql (graphqlOperation (ListEvents)) console.log (результат)} поймать (е) { console.log ( "Невозможно получить привет") console.log (e.response)}} ВОЗВРАТ: { "данные": { "привет": "Привет, мир!" }} Моя проблема Я хочу использовать соединение с AWS-амплификации реагируют, как описано здесь, я использовал следующий кусок кода и включить его в возвращении моего приложения: ** ЭТО НЕ РАБОТАЕТ ** импорт {Connect} из «АМС-амплификации реагировать»; константное ListEvents = `запроса {Привет}` {(объект, ... остальное) => {console.log (объект); console.log (остальное); }} Это ВОЗВРАТ: Причина для двух пустых ответов обсуждаются в другом переполнением стека вопрос, но это просто никогда не возвращает ожидаемые данные. Можете ли вы помочь мне понять это?
Attaque
1

голосов
0

ответ
349

Просмотры

gatsbyjs - Как получить сообщения, отфильтрованные содержательные в году?

Я использую Гэтсби-источник-содержательный, где у меня есть тип, который называется ContentfulBlogPost, чья схема выглядит следующим образом: {ID названия дата тела} Дата является строка (в формате YYYY-MM-DD), авто-магически обрабатываются Гэтсби уровень данных в качестве объекта момента; Я могу назвать fromNow и FormatString на него, и все это. То, что я хочу, чтобы использовать GraphQL для запроса списка сообщений от данного года, основываясь на этом поле даты. Если я делаю это: {allContentfulBlogPost (фильтр: {дата: {регулярное выражение: «/ ^ +2017 /»}}) {...}} тогда я получаю эту ошибку: «Не удается прочитать свойство„fromNow“неопределенных» То, что я на самом деле хочу, чтобы иметь возможность фильтровать данные allContentfulBlogPost, установленные по дате, либо путем преобразования даты в целое / струнной год и нахождение на том, или попросив по всем пунктам дата которых попадает в период с 1 января по 31 декабря данного года. Прямо сейчас, у меня есть ход запроса в Гэтсби-узле, который всасывает все сообщения в блоге, а затем группирует их по годам в JS, а затем передает массив сообщений в шаблон. Это работает, но это действительно кажется, что там должно быть GraphQL способ сделать это?
David Demaree
1

голосов
1

ответ
244

Просмотры

Передайте параметры состояния мутации

Я прочитал документацию о Apollo graphql клиента, но все еще есть некоторые вопросы, сочетающие Apollo и реагировать. Рассмотрим, мы имеем простую форму с 4 полями с кнопку отправки. После того, как подать нажимаются значения из полей сохраняются в this.state.data (проверили, что это правильно сохранено). На внутреннем интерфейсе, у меня есть мутации, как: userCreate (вход: UserInput): Пользователь, который принимает это определенно полевые входы. Проблема заключается в том: Как выполнить мутацию правильно привязки значений из this.state.data полей? С этого момента я следующий код: OnChange = е => this.setState ({данные: {... this.state.data, [e.target.id]: e.target.value}}); handleSubmit = асинхронной () => {writeToLog (this.state.data) сопзЬ {имя, адрес электронной почты, ExternalId, USERCODE} = this.state.data this.props.userCreateQuery ({ввода: {имя, электронная почта, ExternalId, USERCODE}})} это как мутация выглядит следующим образом: сопзЬ QUERY_PERSON_MUTATION = gql` мутации userCreateQuery ($ имя: String !, $ электронная почта: String !, $ ExternalId: String !, $ USERCODE: String) {userCreate (вход: {имя: $ имя, электронная почта: $ электронная почта, ExternalId: $ ExternalId, UserCode: $ USERCODE}) {имя Email ExternalId UserCode}} `; Компонент Wrapup: Const NewUserFormWithData = graphql (QUERY_PERSON_MUTATION, {имя: 'userCreateQuery'}) (NewUserForm); экспорта по умолчанию withApollo (NewUserFormWithData) UPDATE 1: Схема: константные определения типов = `Тип пользователя {UserId: Int / * другие поля * /} вход UserInput {UserId: Int UserCode: String / * другие поля * /} типа Мутация {userCreate (вход : UserInput): userUpdate Пользователь (идентификатор пользователя: Int, вход:
Reborn
1

голосов
0

ответ
199

Просмотры

Угловая, GraphQL и Apollo - Сообщение данных формы с GraphQL Подписка

Я работаю на угловом приложение с GraphQL и Apollo, который отображает данные из моего локального GraphQL API. Кроме того, я работаю в такой форме, которая позволяет пользователям создавать новые данные в API, но я не уверен, что если я использую правильный подход здесь. В настоящее время я получаю эту ошибку: ERROR TypeError: Преобразование круговой структуры JSON Теперь, позвольте мне показать вам соответствующий код. form.component.html Это HTML-форма, которая обращается к onSubmit-Function. Отправить form.component.ts Здесь я использую this.apollo.mutate подписаться новые данные в API onSubmit (formDirective) {пусть фамилия = this.personForm.get ( «фамилия»); пусть имя = this.personForm.get ( 'имя'); пусть электронная почта = this.personForm.get ( 'электронная почта'); пусть статус = this.personForm.get ( 'статус'); пусть активность = this.personForm.get ( 'активность'); . This.apollo.mutate ({Мутация: CREATE_USER_MUTATION переменные: {фамилия: фамилия, имя: имя, адрес электронной почты: адрес электронной почты, статус: статус, вид деятельности: деятельность}}) подписаться ((ответ) => {}); console.log ( 'представлены'); } Types.ts экспортного User = {фамилия: строка; Имя: строка; электронная почта: строка; Статус: строка; активность: строка; } Экспортного Query = {пользователи: Пользователь []; } Экспорт Const CREATE_USER_MUTATION = gql` мутация CreateUserMutation ($ фамилия: String !, $ Имя: String !, $ электронная почта: String !, $ Статус: String !, $ активность: String) {CreateUser (фамилия: $ фамилия, имя: $ имя, адрес электронной почты: $ электронная почта, статус: $ активность: $ активности) {фамилия имя электронной почты статус активности}} `; экспорт интерфейс CreateUserMutationResponse {CreateUser: Пользователь; } Любые указатели в правильном направлении будет высоко ценится, спасибо!
Jeremy Püringer
1

голосов
1

ответ
144

Просмотры

Как кэширование работы в GraphQL?

GraphQL работает в качестве языка запросов проводков всегда против одной конечной точки. Таким образом, большинство инструментов кэширования не могут быть использованы. Так кэширование сети совершенно невозможно с GraphQL? Является ли на стороне клиента кэширование единственно возможный путь для кэширования? Или есть обходной путь?
hashedram
1

голосов
1

ответ
35

Просмотры

graphql почему мне нужно объявить дополнительный параметр в качестве параметра резольверов

Я читал везде о graphql и застрял в реализации неправильно в функции резольверы: Это был мой плохой распознаватель, что я получаю был неопределенный аргумент: константные jobResolvers = {Запрос: {задания (идентификатор) {// код, где я вызываю функцию дб ODM}}} После просмотра несколько поста я это исправить: (понять деструктор часть, но не поэтому подчеркивание _ paremeter) Const jobResolvers = {Запрос: {работа (_, {ID}) {// код, где я вызываю функцию дб ODM}}} Здесь вы можете увидеть это два очень хорошие и толковые после неудачи они не объясняют, почему они два параметра в функции распознавателя (Это большой вопрос) осуществления graphql стороне сервера getAuthor (_,{ID}) подпись функции имеет два параметра, но только второй из них является использование и он не будет работать только с параметром ид другие о GraphQL объяснил (Как сервер GraphQL превратить запрос в ответ?) Автор ( корень, арг) подпись функции имеет два параметра, но только с помощью второй также функции не будет работать с параметром только аргом (корень никогда не работает для меня)
Angel
1

голосов
0

ответ
84

Просмотры

Список всех вопросов в проекте Github (с GraphQL)

Я пытаюсь сделать список названий выпуска GitHub в рамках проекта. Для этого я использую API GraphQL. Там не было никаких проблем с этим, когда у меня было <100 вопросов, (одна страница), но теперь, когда есть более 100, мне нужно, чтобы получить несколько страниц, а это значит, мне нужно рекурсивно вызвать функцию. Проблема заключается в том, что, поскольку это асинхронный я не знаю, как сделать этот окончательный список. Мне нужен один массив со всеми названиями, так что я могу его в алфавитном порядке и выводить его. Лучшее, что я могу сделать сейчас, в алфавитном порядке каждый кусок. Функция buildIssueList (курсор) {вар title_list = []; вар URL = graphqlapi; вар запрос = «»; если (курсор == "") {запрос = «запрос {репозиторий (владелец:» меня», название:» myrepo») {проекты (первый: 10) {ребра {узлы {имя столбцы (первый: 10) {узлов { имя карты (первый: 100) {TOTALCOUNT ребра {узел {содержание {... на выпуск {название}}}} курсора pageInfo {endCursor hasNextPage}}}}}}}}} "; } Еще {запрос = «запрос {репозиторий (владелец: "меня", название: "myrepo") {проекты (первый: 10) {ребра {узел {имя столбцы (первый: 10) {узлов {имя карта (первый: 100 , после того, как:»+ '\ "' + курсор + '\"' + ') {TOTALCOUNT ребра {узел {содержание {... на выпуск {название}}}} курсор pageInfo {endCursor hasNextPage}}}}}}} }} '; } Вар данных = { 'запрос': запрос} вар column_list = [] вар mresponse = $ .ajax ({заголовки: {Авторизация: "Канал mytoken"}, Datatype: "JSON", тип: 'POST', URL: URL данные: JSON.stringify (данные)}). } Еще {вар ftempar = []; . [колонок "карты"] [ "ребро"] Foreach (функция (узел) {ftempar.push (узел [ "узел"] [ "содержание"] [ "название"]);}); addtoDropdown (ftempar); }}); }); } «AddtoDropdown ()» упорядочиваются по алфавиту массив это передается и добавляет его в основной список. И я не хочу, чтобы просто непрерывно в алфавитном порядке основного списка на протяжении моей программы. Я хочу, чтобы мой полный список, и в алфавитном порядке его один раз. } Еще {вар ftempar = []; . [колонок "карты"] [ "ребро"] Foreach (функция (узел) {ftempar.push (узел [ "узел"] [ "содержание"] [ "название"]);}); addtoDropdown (ftempar); }}); }); } «AddtoDropdown ()» упорядочиваются по алфавиту массив это передается и добавляет его в основной список. И я не хочу, чтобы просто непрерывно в алфавитном порядке основного списка на протяжении моей программы. Я хочу, чтобы мой полный список, и в алфавитном порядке его один раз.
singmotor
1

голосов
1

ответ
511

Просмотры

Реагировать Native Apollo клиент GraphQL Мутация возвращает ошибку 400

Я использую GraphQL и Apollo на моем Реагировать Родные приложения, мои запросы работают нормально, но когда я пытаюсь запустить мутацию (которая работает с точно таким же кодом в браузере), я получаю следующее сообщение об ошибке: Ошибка: Сеть ошибка: Ответ не удалось: Получен код состояния 400 в новых ApolloError (bundle.umd.js: 76) в bundle.umd.js: 952 в bundle.umd.js: 1333 в Array.forEach () в bundle.umd.js : 1332 в Map.forEach () в QueryManager.broadcastQueries (bundle.umd.js: 1327) в bundle.umd.js: 901 в tryCallOne (core.js: 37) в core.js: 123 Вот как я пытаясь послать эту мутацию: Const CreateItem = gql` {{мутация CreateItem (название: "Банан", резюме: "Санта", CAMPAIGNID: 1, pinId: 1) {ID}}} `; client.query ({запроса: CreateItem}). Затем ((соответственно) => {console.log (» ответ запроса '); console.log (соответственно); .}) Улов ((ошибка) => {console.log ( 'ошибка'); console.log (ошибка);}); А вот мой клиент: импорт {ApolloClient} из «Аполлона-клиента»; импорт {HttpLink} из 'аполлон-ссылка-клиента'; импорт {SetContext} из 'Аполлона-ссылка контекста'; импорт {InMemoryCache} из 'Аполлоном-кэш-InMemory'; пусть bearer_token = ''; Const httpLink = новый HttpLink ({URI: 'HTTP: // локальный: 3000 / graphql /'}); Const authLink = SetContext ((_, {заголовки}) => {// получить маркер аутентификации из локального хранилища, если он существует константный токенов = bearer_token; // возвращает заголовки к контексту так httpLink может читать их возвращать {заголовки: { ... заголовки авторизации: маркер `Bearer $ {bearer_token}`: ""}}}); Const клиент = новый ApolloClient ({ссылка: authLink.concat (httpLink), кэш: новый InMemoryCache ()}); Функция экспорта setToken (маркер) {bearer_token = маркер; } Клиента экспорта по умолчанию; На внутреннем интерфейсе, я отлажена и запрос получен, он находит пользователь на основе маркеров, который устанавливается на клиенте, но ничего не делает и возвращает меня 400, опять же, только тогда, когда я пытаюсь отправить его из приложения, на graphiql браузере работает. Что мне не хватает? Большое спасибо. на graphiql браузере работает. Что мне не хватает? Большое спасибо. на graphiql браузере работает. Что мне не хватает? Большое спасибо.
leofontes
1

голосов
0

ответ
41

Просмотры

Как получить все элементы в коллекции ArangoDB использования GraphQL

Я использую ArangoDB Foxx GraphQL Пример для извлечения данных из нескольких коллекций (каждый из которых называется так же, как тип). Все хорошо, когда я хочу, чтобы получить один элемент, используя свойство _key, но когда я пытаюсь получить все элементы в коллекции (см diagnosticItems) Я получаю сообщение об ошибке. Мое определение схемы является: экспорт константных = определения типов [ `перечисление состояния {вверх вниз} типа DiagnosticItem {_key: String! Название: String! Статус: Статус locationKey: String lastUpdatedDate: расположение строк: Расположение @aql (EXEC: "для размещения в месторасположению location._key == @ current.locationKey возвращения местоположения")} типа Расположение {_key: String! Название: String! } Типа Query {diagnosticItem (_key: String!): DiagnosticItem diagnosticItems: [DiagnosticItem] Местоположение (_key: String!): Местоположение} `]; Полный StackBlitz здесь.
tlbignerd
1

голосов
0

ответ
332

Просмотры

Есть хороший способ объединить резольвера для нескольких объектов GraphQL, предпочтительно с использованием graphql-JS?

Предположим, у вас есть GraphQL слой, написанный на Node.js с использованием graphql-JS, который взаимодействует с базой данных SQL. Предположим, у вас есть следующие простые типы и поля: Хранить в одном месте кирпича и ступки для сети продуктовых магазинов. Поля: ID: GraphQLID область: сотрудники StoreRegion: GraphQLList (Employee) StoreRegion GraphQLEnumType, содержащий перечень областей, на которых цепь делит свои магазины. Значения: СЕВЕРО MIDATLANTIC ЮГО ... Сотрудник Представляет один сотрудник, работающий в магазине. Поля: ID: GraphQLID Имя: GraphQLString зарплата: GraphQLFloat Пусть API выставляет магазин запрос, который принимает Регион и возвращает список объектов Store. Теперь предположим, что клиент посылает запрос: {магазин (регион: СЕВЕРО) {сотрудников {имя зарплаты}}} Надеюсь, это все довольно просто до сих пор. Так вот мой вопрос, и я надеюсь (ожидать, на самом деле), что это то, что имеет общее решение, и я просто не удается найти его, потому что мой Google-фу является слабым сегодня: есть хороший способ, что я могу написать резольверами для этих типов, например, что я могу обернуть все требуемые поля для всех сотрудников из всех возвращенных магазинов в одном операторе SQL запросов, в результате чего один туда-обратно в базу данных формы: SELECT имя, зарплата от сотрудников WHERE ID IN (1111, 1133, 2177, ...), а не сделать один запрос на одного работника или даже один запрос за магазин? Это действительно конкретный случай более общего вопроса: есть хороший способ объединить арбитр, чтобы избежать многочисленных запросов в тех случаях, когда они могут быть легко объединены? Я задаю этот вопрос с точки зрения graphql-Js, потому что это то, что я надеюсь работать, и так как я полагаю, что позволило бы более конкретные ответы, но если есть более реализация агностик ответ, это было бы слишком круто ,
Ken Bellows
1

голосов
1

ответ
254

Просмотры

Django multi-table inheritance and graphene

I am trying to serve a graphql endpoint through django-graphene. I have the following models: class BaseModel(models.Model): fk = models.ForeignKey(MainModel, related_name='bases') base_info = models.CharField(...) class ChildModel(BaseModel): name = models.CharField(...) MainModel being my central data model. There are several variants of ChildModel, which explains the multi-table inheritance used here. I have been able to get things to work with this schema declaration: class BaseModelType(DjangoObjectType): class Meta: model = BaseModel class ChildModelType(DjangoObjectType): class Meta: model = ChildModel class MainModelType(DjangoObjectType): class Meta: model = MainModel which allows the following graphQL query: { mainModel(id: 123) { id bases { id baseInfo childmodel { id name } } } } However, I'd like to flatten this the way Django understands the inheritance, so that I can query the data like this: { mainModel(id: 123) { id bases { id baseInfo name
Laurent S
1

голосов
1

ответ
243

Просмотры

Create mutations in GraphQL with a lot of use cases

I'm a newbie in GraphQL and need some advice (best practice) in creating mutations in GraphQL (particular with graphene-python). Let's suppose we have some Task and a User. Now I want to create Task mutation, that covers three cases: Create Task. Create Task and assign existing User to this Task. Create Task and assign newly created User to this Task. So, is this a good idea to implement this as a single QraphQL "entry point", or it's better to create another mutation for the third case (maybe)? mutation { createTask(taskTitle: "Do some stuff"){ task { id } } } mutation { createTask(taskTitle: "Do some stuff", user: {id: "ggdf00askladnl42"}){ task { id } } } mutation { createTask(taskTitle: "Do some stuff", user: {email: "[email protected]", fullName: "John Doe"}){ task { id } } } and respective mutation in graphene-python: class CreateTODO(graphene.Mutation): class Arguments: task_title = graphene.NonNull(graphene.String) user = UserInput() task = graphene.Field(lambda: Task) def mutate(self, info, task_title, user=None): # # Do some stuff here # return CreateTODO(task=task)
machin
1

голосов
1

ответ
225

Просмотры

GraphQL: как сортировать «внешний ключ» набор элементы элементов узла?

Я использую Django, графен-Джанго и Джанго-фильтр для создания GraphQL апи и имеет проблемы с OrderBy: В общем: у меня есть способности, каждый из них имеет несколько отделений. Я могу сортировать способности, но не может сделать то же самое с департаментами. Django модель: класс факультет (models.Model): код = Департамент класса models.CharField (...) (models.Model): код = models.CharField (...) факультет = models.ForeignKey (факультет, on_delete = модели .CASCADE, related_name = «отделы»,) для того, чтобы иметь возможность сортировать способности я добавил: импорт графеновых импорт django_filters из графена импорта реле, OBJECTTYPE из django_filters импорта OrderingFilter из graphene_django.types импорта DjangoObjectType из graphene_django.filter импорта DjangoFilterConnectionField класс FacultyFilter (django_filters. FilterSet): класс Meta:
Sergey
1

голосов
0

ответ
393

Просмотры

Почему Мутация OnCompleted не срабатывает, если внутри компонента Query?

Я хочу, чтобы запрос, который имеет мутацию запрос для создания элементов внутри, если запрос не возвращает элементы: {({загрузка, ошибки, данные: {последовательность}, refetch}) => {если (загрузка) возвращение «Загрузка ... '; если (ошибка) возвращение `ошибка: $ {ошибка}`; Возвращение ({sequence.items.length === 0? {(CreateItem) => {сопз обновление = () => {CreateItem ({// некоторые варианты здесь})} возвращение (обновление ()}> Создать элемент)} }: this.getItemElements (последовательность. Предметы) } ); }} В противном случае код работает, но OnCompleted обратного вызова не обжигают при всех. Если переместить компонент мутации вне запроса, OnCompleted обжигают. Почему оберточная внутри компонента запроса предотвратить OnCompleted функцию для стрельбы?
Jaakko Karhu
1

голосов
2

ответ
899

Просмотры

Variable '$_data' cannot be non input type in GraphQL mutation with Prisma

I am using Prisma with GraphQL and get errors when I run the mutatioin. I deployed prisma succussfully and binded it with local graphQL. -- datamodel.graphql - prisma setting type Link { id: ID! @unique description: String! url: String! postedBy: User } type User { id: ID! @unique name: String! email: String! @unique password: String! links: [Link!]! } -- schema.graphql - local setting # import Link from "./generated/prisma.graphql" type Query { info: String! feed: [Link!]! } type Mutation { post(url: String!, description: String!): Link! signup(email: String!, password: String!, name: String!): AuthPayload login(email: String!, password: String!): AuthPayload } type AuthPayload { token: String user: User } type User { id: ID! name: String! email: String! links: [Link!]! } Resolver for signup mutation is async function signup(parent, args, context, info) { // 1 const password = await bcrypt.hash(args.password, 10) // 2 const user = await context.db.mutation.createUser({ data: { ...args, password }, }, `{ id }`) // 3 const token = jwt.sign({ userId: user.id }, APP_SECRET) // 4 return { token, user, } } And this is .graphqlconfig.yml content projects: app: schemaPath: src/schema.graphql extensions: endpoints: default: http://localhost:4000 database: schemaPath: src/generated/prisma.graphql extensions: prisma: database/prisma.yml GraphQL query I run is . mutation { signup( name: "Alice" email: "[email protected]" password: "graphql" ) { token user { id } } } And the response I got when I run this is { "data": { "signup": null }, "errors": [ { "message": "Variable '$_data' cannot be non input type 'UserCreateInput!'. (line 1, column 19):\nmutation ($_data: UserCreateInput!) {\n ^", "locations": [], "path": [ "createUser" ] } ] } I can'find the reason of this. Thank you.
Web Developer
1

голосов
0

ответ
134

Просмотры

Есть простой способ, чтобы переместить поле на удаленной схеме graphql?

Я пытаюсь интегрировать с удаленной схемой с использованием graphql-инструментов для узла. У меня есть удаленная схема, но, к сожалению, все запросы определяются на типе просмотра, а не типа запросов. Я хотел бы использовать graphql-инструменты для преобразования схемы и переместить некоторые из полей от типа просмотра к типу запросов. Я попробовал несколько различных методов: в том числе delegateToSchema в пользовательских распознаватель и преобразований ExtractField, но они не работали. delegateToSchema кажется, что правильный способ сделать это, но, к сожалению, он может делегировать только к корневому типа а не типа как средства просмотра. Кто-нибудь знает, как я могу добавить поле типа запроса, что делегаты на поле от типа просмотра?
Andrew Safigan
1

голосов
1

ответ
333

Просмотры

вернуть код состояния от graphql йоги

Из graphql йоги, внутри моих резольвер я проверить перед распознавателем вызова, если этот распознаватель защищен или нет. Если распознаватель защищен, и пользователь не авторизован я могу бросить такую ​​ошибку: возвращаю новый Error ( «Токен отсутствующего»); Это останавливает выполнение запроса и возвращает правильную форму сообщения, с полем ошибки. { "данные": нулевые, "ошибка": [{ "сообщение": "Знак отсутствует", "Место": [{ "строка": 3, "колонок": 3}], "путь": [ «пользователи "]}]} отклик имеет статус 200, хотя, что не является правильным. Я хотел бы иметь возможность выбирать свой собственный статус, как 403, например. Вот моя текущая реализация резольверами: Const withAuth = authed => (_, арг, контекст, ... остальное) => {если (context.token) {вернуть новый Error ( 'Токен не хватает!'); } Пусть результат = NULL; попробовать {результат = jwt.verify (context.token, process.env.HASH); } Задвижка (__) {вернуть новый Error ( 'Неверный маркер'); } Const {имя пользователя, адрес электронной почты} = результат; если (! || имя пользователя электронной почты) {вернуть новый Error ( 'Неверный маркер'); } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! лексема) {вернуть новый Error ( «Токен отсутствующий»); } Пусть результат = NULL; попробовать {результат = jwt.verify (context.token, process.env.HASH); } Задвижка (__) {вернуть новый Error ( 'Неверный маркер'); } Const {имя пользователя, адрес электронной почты} = результат; если (! || имя пользователя электронной почты) {вернуть новый Error ( 'Неверный маркер'); } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! лексема) {вернуть новый Error ( «Токен отсутствующий»); } Пусть результат = NULL; попробовать {результат = jwt.verify (context.token, process.env.HASH); } Задвижка (__) {вернуть новый Error ( 'Неверный маркер'); } Const {имя пользователя, адрес электронной почты} = результат; если (! || имя пользователя электронной почты) {вернуть новый Error ( 'Неверный маркер'); } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! проверить (context.token, process.env.HASH); } Задвижка (__) {вернуть новый Error ( 'Неверный маркер'); } Const {имя пользователя, адрес электронной почты} = результат; если (! || имя пользователя электронной почты) {вернуть новый Error ( 'Неверный маркер'); } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! проверить (context.token, process.env.HASH); } Задвижка (__) {вернуть новый Error ( 'Неверный маркер'); } Const {имя пользователя, адрес электронной почты} = результат; если (! || имя пользователя электронной почты) {вернуть новый Error ( 'Неверный маркер'); } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству! } Вернуть authed (_, арг, {... контекст пользователя: {имя пользователя, адрес электронной почты}}, ... остальное); }; константные резольверы = {Запрос: {пользователи: withAuth (распознаватель (Пользователь)), // получить список пользователей из БД} Я хотел бы добавить, прежде чем запрос промежуточного слоя в экспрессе, но нет возможности сказать, что запрос вызывается, так как все звонки осуществляются с той же конечной точкой. Любой вклад будет оценен по достоинству!
Adam
1

голосов
0

ответ
190

Просмотры

Spring загрузка graphql-Java, подписка и streamlisteners

Я пытаюсь создать наблюдаемую из ответа streamlistener, но не в состоянии сделать это. Я совершенно новой идее EventObservable и реактивная Java. Было бы полезно, если бы кто-то может заглянуть в мой код, чтобы увидеть, если он был построен правильный путь, и если мое понимание концепции находится на правильном пути. @Component общественного класса EventObservable {частное Наблюдаемого наблюдаемый = новый Наблюдаемый () {@Override защищен недействительный subscribeActual (наблюдатель
1

голосов
1

ответ
169

Просмотры

Как бороться с Джанго-графена с UUID первичных ключей в Джанго?

Мы используем Django и Джанго-графен для обеспечения GraphQL API. Мы имеем UUID первичных ключей в модели. Как правильно работать с ним?
shalakhin
1

голосов
1

ответ
1.5k

Просмотры

Почему я получаю аргумент неопределенными передается парсер не является действительным GraphQL DocumentNode?

I do import graphQL query as: import {getStudents} from'./../graphql/Queries.graphql' Queries.graphql file: query getStudents($schoolID: Int!){ allStudents(schoolId: $schoolID){ pickUpLat pickUpLng } } but when I try to pass the query to the component as: export default graphql(getStudents, { options: (props) => ({ variables: { schoolID: props.schoolID } }) })( StudentsMap ); I get this error: Uncaught Error: Argument of undefined passed to parser was not a valid GraphQL DocumentNode. You may need to use 'graphql-tag' or another method to convert your operation into a document at invariant (browser.js:38) at parser (react-apollo.browser.umd.js:199) at graphql (react-apollo.browser.umd.js:1061) at Object../src/map/StudentsMap.js (StudentsMap.js:96) at __webpack_require__ (bootstrap b06dc52180087582baaa:19) at Object../src/App.js (App.css?9a66:26) at __webpack_require__ (bootstrap b06dc52180087582baaa:19) at Object../src/index.js (index.css?f255:26) at __webpack_require__ (bootstrap b06dc52180087582baaa:19) at Object.0 (registerServiceWorker.js:117) However, if I define the query in the same file of component (not importing it) as: const getStudents= gql` query getStudents($schoolID: Int){ allStudents(schoolId: $schoolID){ pickUpLat pickUpLng } }` then it does work normally, any idea why I get that error when try to import the query? Here is my webpack.config.js settings: (based on this reference) var webpack = require('webpack'); module: { rules: [ { test: /\.(graphql|gql)$/, exclude: /node_modules/, loader: 'graphql-tag/loader', }, ], } It seems that Loading queries with Webpack fails? or what it could be?
simo
1

голосов
1

ответ
569

Просмотры

Spring + GraphQL - опция авторизации

Я в настоящее время использую Spring загрузки Starter и GraphQL Java Tools использовать GraphQL в моем Спринг приложении. Он хорошо работает вместе с моим фильтром авторизации, до тех пор, как я санкционировать graphql конечную точку. Теперь я хотел бы открыть определенные мутации или запросы общественности (таким образом, не требуется авторизация), и это, где я спотыкаться. Как я могу открыть graphql конечную точку, но все еще быть в состоянии использовать @PreAuthorize аннотацию Spring безопасности для авторизации на уровне метода? Другими словами: Можно ли иметь «дополнительный» разрешение на конечной точке? Это моя конфигурация: @Override защищена недействительная Configure (HttpSecurity HTTP) бросает исключение {log.debug ( "configureHttpSecurity"); // разрешить только запрос, если он не в permitAllEndpoints и соответствует API_ROOT_URL ИЛИ // MESSAGING_ROOT_URL Список requestMatchers = новый ArrayList (); requestMatchers.add (новый SkipPathRequestMatcher (permitAllEndpointList, API_ROOT_URL)); requestMatchers.add (новый AntPathRequestMatcher (MESSAGING_ROOT_URL)); OrRequestMatcher apiMatcher = новый OrRequestMatcher (requestMatchers); .antMatchers. http.csrf () отключить () .sessionManagement () .sessionCreationPolicy (SessionCreationPolicy.STATELESS) й () .authorizeRequests () (permitAllEndpointList.toArray (новая строка [0])) .permitAll () й () .authorizeRequests () .antMatchers (API_ROOT_URL, MESSAGING_ROOT_URL). аутентифицировано () й () .addFilterBefore (новый CustomCorsFilter (), UsernamePasswordAuthenticationFilter.class) .addFilterBefore (новый AuthenticationFilter (AuthenticationManager ()), UsernamePasswordAuthenticationFilter.class) .addFilterBefore (новый AuthorizationFilter (apiMatcher), UsernamePasswordAuthenticationFilter.class); } На apiMatcher это открыть определенные REST конечные точки. Это мой AuthorizationFilter: @Override attemptAuthentication общественного Authentication (HttpServletRequest HTTPServletRequest, HttpServletResponse HttpServletResponse) бросает AuthenticationException, IOException, ServletException {попробуйте {авторизации String = HTTPServletRequest. getHeader ( "Авторизация"); если (! авторизация = NULL && authorization.startsWith ( "Знаменосец ")) {вернуться getAuthentication (authorization.replace (" однонаправленного", "")); }} Поймать (ExecutionException е) {httpServletResponse.sendError (HttpServletResponse.SC_FORBIDDEN, «Предоставленный маркер либо не действует, или уже истек!»); возвращать нуль; } Поймать (IOException | InterruptedException е) {httpServletResponse.sendError (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Была проблема проверки прилагаемого фишку!"); возвращать нуль; } HttpServletResponse.sendError (HttpServletResponse.SC_FORBIDDEN, "Несанкционированное"); возвращать нуль; } Если я не» т отправить сообщение об ошибке в конце attemptAuthentication я смог бы получить доступ к REST конечных точек, которые не должны быть открыты. Кроме того, если я просто разрешить GraphQL Endpoint то никакого разрешения не будет, и, таким образом, каждый @PreAuthorize не получится, даже если я предоставить действительный JWT. Может быть, что мой подход к этому уже не так. Если это так, то пожалуйста, дайте мне знать.
puelo
1

голосов
0

ответ
102

Просмотры

Сангрия GraphQL Контекст может стать слишком большим?

Как структурировать объект контекста, описанный здесь, таким образом, что она не содержит все услуги, которые ваша схеме может понадобиться? В примере StarWars схеме все поля используют один и тот же контекст (CharacterRepo) для решения. Мой контекст может потенциально содержать 50 различных услуг?
tgk
1

голосов
0

ответ
711

Просмотры

Почему мне нужно включить withApollo HOC на компоненте, чтобы удовлетворить машинописи компилятор?

Я использую React, машинопись, и Аполлон в приложении. У меня есть произвольный компонент, который я хотел бы, чтобы сделать React. Компонент использует функцию создания сообщения для обработки загрузки данных из серии graphql запросов. parent.tsx myComponent.tsx класс MyComponent расширяет React.Component {// код, визуализацию и т.д. экспорт по умолчанию (Compose graphql (queryGetSomeData, {имя: "GetSomeData"} ... Когда я не включаю какой-либо реквизита с компонентом, . все хорошо, Машинопись компилятор не жалуется, и приложение делает тот момент я пытаюсь включить подпорку (любого рода), компилятор жалуется следующим образом: // или Foo, или Foo = { 'бара } [ерей] Свойство „йоЗотеЬЫпд“ не существует на типе "IntrinsicAttributes & IntrinsicClassAttributes & Readonly
twsmith
1

голосов
1

ответ
418

Просмотры

Тип Query.user должен быть тип выхода, но получил не определено

HTTP: // локальный: 4000 /, когда я даю в качестве входных данных {пользователя (ID: 1) {FirstName}} Я получаю выход { "ошибки": [{ "сообщение": «Тип Query.user должен быть Тип выхода, но получил: «не определено:. не определено \ п \ NThe тип Query.user (ID :) должен быть тип ввода, но есть. }]} Я делаю это Graphql первый раз, и я не знаю, где я делаю что-то неправильно, я вижу много пример, но если я таким образом, я получил много других ошибок. Я пытался изменить InputType от типа, но по-прежнему выдает. server.js вар экспресс = требуют ( 'экспресс'), приложение = экспресс (), порт = process.env.PORT || 4000; вар graphQLHTTP = требуется ( 'экспресс-graphql'); вар схема = требуется ( './ схемы'); app.use (graphQLHTTP ({схемы, graphiql: истинно,})) app.listen (порт); схемы. JS ниже сопз {GrpahQLString, GrpahQLInt, GraphQLSchema, GraphQLInputObjectType, GraphQLObjectType, GraphQLOutputType} = требуется ( 'graphql'); Const выборки = требуется ( «узла выборки»); Const base_url = 'HTTP: // локальный: 3000'; Const UserType = новый GraphQLInputObjectType ({имя: 'пользователь', описание: "...", поля: () => ({идентификатор: {inputType: GrpahQLInt // решительность: (пользователь) => user.id} , ПгвЬЫат: {inputType: GrpahQLString // постановляет: (пользователь) => user.firstname}, LastName: {inputType: GrpahQLString // решительность: (пользователь) => user.lastname,}, адрес электронной почты: {inputType: GrpahQLString // решительность: (пользователь) => user.email}})}); module.exports = новый GraphQLSchema ({запрос:
amit
1

голосов
0

ответ
25

Просмотры

Graphql: прочитайте SDL директиву типа

Я пытаюсь получить директивы типа. Часть схемы: директива @translates (тип: String) на объекте | Тип FIELD_DEFINITION DocumentTranslated @translates (тип: Документ) {...} Чтение схемы: info.schema.getTypeMap () [ 'DocumentTranslated'] astNode Результат:. {вид: 'ObjectTypeDefinition', описание не определено, имя: {типа: 'Name', значение: 'DocumentTranslated', LOC: {старт: 8893, конец: 8911}}, интерфейсы: [], директивы: [], поля: Я не понимаю, почему директивы не присутствуют в AST? Как я могу прочитать указания типа?
Terion
1

голосов
0

ответ
24

Просмотры

Promise блокировать мою ссылку на MongoDB / Node.js

Я использую Mongoose для MongoDB с Node.js / React / GraphQL. У меня есть документ, который в статье, относящаяся к другому документу Event, который связан с несколькими документами Тегов. Когда я пытаюсь сохранить свои документы, у меня всегда есть отложенное обещание в мои теги в документе событий. Результат: - Статья сохранить связанные с Event - событие сохраняется, но не связанные с тегами - Теги сохраняются, но не связанные с событием Ожидая: - Статья сохранить связанные с Event - событие сохраняется и связанные с тегами - Теги сохраняются и связанные с на события второй раз, когда мой сервер был на начало работает без очереди и ошибок. Так что я думаю, что моя проблема является проблемой времени, но я не знаю, как решить ее. Я пытаюсь поставить некоторые тайм-аут, но без успеха. У меня есть следующие схемы в «Строгая» Мангуст / MongoDB //mode/event.js; // вар зависимости от импорта мангуст = требуется ( «мангуст»); Схема вар = mongoose.Schema; // создать новый экземпляр mongoose.schema. схема принимает объект, который показывает // формы ваших записей базы данных. вар EventSchema = новая схема ({createdAt: {Тип: Дата, по умолчанию: Date.now} Имя: {Тип: String, требуется: 'Пожалуйста, введите название события'}, описание: Строка, site_web: String, темы : {Тип: String, перечисление: [ 'Экономика', 'Политика', 'Bitcoins', 'Спорт'], по умолчанию: 'Экономика'}, фотография: String, event_date_start: Дата, event_date_end: Дата, type_event: {Тип: String, перечисление: [ 'Противостояние', 'Стандарт'], по умолчанию: 'Стандарт'}, команды: [{тип: mongoose.Schema. Types.ObjectId, ссылка: 'Команда'}], теги: [{тип: mongoose.Schema.Types.ObjectId, ссылка: 'Tag'}]}); // экспортировать наш модуль для использования в server.js module.exports = mongoose.model ( 'событие', EventSchema); //model/tag.js «использование строгой»; // вар зависимости от импорта мангуст = требуется ( «мангуст»); Схема вар = mongoose.Schema; // создать новый экземпляр mongoose.schema. схема принимает объект, который показывает // формы ваших записей базы данных. вар TagSchema = новая схема ({имя: {Тип: String, требуется: 'Пожалуйста, введите имя тега'}}); // экспортировать наш модуль для использования в server.js module.exports = mongoose.model ( 'Tag', TagSchema); //model/article.js «использование строгой»; // вар зависимости от импорта мангуст = требуется ( «мангуст»); Схема вар = мангуст. Схема; // создать новый экземпляр mongoose.schema. схема принимает объект, который показывает // формы ваших записей базы данных. вар ArticleSchema = новая схема ({// _id: String, createdAt: {Тип: Дата, по умолчанию: Date.now}, событие: {Тип: mongoose.Schema.Types.ObjectId, ссылка: 'Событие', требуется: «Пожалуйста, введите событие»}, тело: String, тип: {тип: String, перечислимую: [ 'Противостояние', 'Стандарт'], по умолчанию: 'Стандарт'}, url_source: String, темы: {тип: String, перечисление: [ 'Экономика', 'Политика', 'Bitcoins', 'Спорт'], по умолчанию: 'Экономика'}, type_media: {Тип: String, перечисление: [ 'видео', 'веб', 'подкаст'], по умолчанию: ' паутина»}, article_date: Дата, }); // экспортировать наш модуль для использования в server.js module.exports = mongoose.model ( 'статьи', ArticleSchema); В моей схеме Node.js / GraphQL У меня есть функция решительности createArticle: {Типа: СтатьяВид статья, арг: {событие: {Тип: EventCreateType}, тело: {Тип: GraphQLString}, тип: {типа: СтатьяВид статья}, url_source: { Тип: GraphQLString} тема: {типа: themesType}, // type_media: {Тип: новый GraphQLList (MEDIATYPE)} type_media: {Тип: MEDIATYPE}, {article_date: Тип: GraphQLString}}, постановляет: (источник асинхронный, PARAMS ) => {если (params.event) {вар eventparams = params.event; вар tagparams = params.event.tags; params.event.tags = NULL; params.event = NULL; вар tagIds = []; // Traitement дез метки вар inEvent = ждут EventsModel.findOne ({ 'имя': eventparams.name}); если (inEvent!) {inEvent = новый EventsModel (eventparams); если (tagparams) {если (! tagparams.length = 0) {tagIds = ждать tagparams.map (функцию асинхронного (с) {уагом inTag = ждет TagsModel.findOne (с), если (inTag) {inTag = новый TagsModel (! с); inTag.save (функция (ERR) {если (ERR) {console.log (ERR);}});} возвращать inTag;}); console.log (» ****************************** Le Tableau ****************** ******** '); console.dir (tagIds); console.log ( '********************************************* *********** '); //inEvent.tags = tagIds; Promise.all (tagIds) .Затем (функция (savedObjects) {console.log ( '******************************* ************************* '); console.log (' Le Inside Tab: 'savedObjects); console.log (' *** ************************************************** *** '); // Сделайте что-нибудь, чтобы отпраздновать inEvent.tags = savedObjects;?.}) поймать (функция (ERR) {// один или оба ошибочный console.log (ERR);}); }} InEvent.save (функция (ERR) {если (ERR) {console.log (ERR);}}); } Console.log ( '******************* Propriété inEvent *********************** ****** '); console.dir (inEvent); console.log ( '********************************************* *********** '); вар articleModel = новый ArticlesModel (PARAMS); articleModel.event = inEvent; console.log ( '*********************** Propriété Статья перед сохранением ****************') ; console.dir (articleModel); console.log ( '********************************************* *********** '); articleModel.save (функция (ERR, статья) {если (ERR) {console.log (ERR); } Если (статья) {вернуться ArticlesModel.findById (article._id) .populate ( 'статья') .populate ( 'событие') .exec (функция (ошибки, статьи) {console.log ( 'статья спаслась Сукчес') articles.article.articles.push (статьи); articles.article.save (функция (ERR, статья) {если (ERR) {console.log (ERR);}}); возвращать статьи; })}}); вернуться articleModel; } Еще {console.log ( 'VERIF 3'); } Console.log ( 'VERIF 4'); }},
1

голосов
1

ответ
255

Просмотры

Graphql Object that implements an Interface is not not inheriting resolver from Interface

Я с помощью graphql-инструментов для создания GraphQL схемы, esentially У меня есть эта структура константные определения типов = `Тип запроса {автор (имя: String): Автор} интерфейс Person {идентификатор: Int Имя: String гражданство: тип Строка Автор реализующий Person { идентификатор: Int имя: String гражданство: String 'и у меня есть следующие резольверы Const резольверы = {запроса: {автора (_, арг) {вернуться Author.find ({где: арг}); }} Лицо: {гражданство () {возвращение "Пример гражданства"; }}} Я сделать схему исполняемого константного схему = makeExecutableSchema ({, резольверы определений типов, inheritResolversFromInterfaces: истинный}); и дополнительный аргумент inheritResolversFromInterfaces: истинный его должен позволить мне наследовать гражданство распознаватель от человека к автору, на основе документации Аполло graphql-инструменты (ссылка). Таким образом, когда автор опрашивается, появится строка «Пример гражданства». Однако это не так, то запрос возвращает с «автором»: { «ID»: 1, «имя»: «Питер», «гражданство»: нулевая}
Adolfo
1

голосов
1

ответ
162

Просмотры

Макет ответа апи в graphql-Java

У меня есть graphql API, написанный с использованием graphql-Java-инструментов и graphql-Java. Я хочу, чтобы дразнить операцию запроса. Как я могу это сделать? Аполлон graphql-TOOLS единственный путь для достижения этой цели. Я гавань использоваться любой другая библиотека Apolo в моем проекте еще и не хотел идти по этому пути только за насмешливое обслуживание.
user3732317
1

голосов
0

ответ
324

Просмотры

graphql-подписка withFilter возвращает неопределенное значение; подписки без переменных работать нормально

Я пытаюсь получить мою голову вокруг graphql-подписки и withFilter. Подписки без переменных работать, как задумано, но если я пытаюсь использовать withFilter, я получаю только «Подписка поле должно вернуть Async Iterable. Полученное: не определено»Ошибка при попытке запустить подписку. Я делаю что-то неправильно с настройкой withFilter, являются некоторые несовместимости с пакетами я использую или я полностью отсутствует что-то очевидное здесь? Все запросы и мутации работают должным образом, поэтому базовый набор вверх должно быть хорошо. Мой набор вверх похож на это (все фрагменты кода в https://gist.github.com/aqmattil/41e10e7c9f30b8ea964cecdc61c58f20 Package.json // package.json «зависимости»: { «аполлон-сервер-экспресс»: «^ 2,0 0,0-beta.2" , "тело-анализатор": "^ 1.18.3", "экспресс": «^ 4.16. siteAdded», { 'siteAdded': сайт}); вернуться сайт; }}}}); module.exports = мутация; Подписка // subscriptions.js Const graphql = требуется ( 'graphql'); Const {GraphQLObjectType, GraphQLString} = graphql; Const {withFilter} = требуется ( 'graphql-подписки'); Const SiteType = требуется ( './ site_type'); Const PubSub = требуется ( './ pubsub_helper'); Const Подписки = новый GraphQLObjectType ({имя: 'подписки', поля: () => ({/ * // этот код работает, закомментированы испытать withfilter siteAdded: {Тип: SiteType, решительность (полезная нагрузка) {вернуться payload.siteAdded }, подписаться () {вернуться pubsub.asyncIterator ( 'siteAdded');}} * / // тест withFilter siteAdded: {Тип: SiteType, арг: {имя: {Тип: GraphQLString}}, решительность (полезная нагрузка) {вернуться payload.siteAdded; }, Подписаться () {// это возвращает неопределенное withFilter (() => {console.log ( "в подписываться withfilter"), возвращение pubsub.asyncIterator ( 'siteAdded');}), (полезная нагрузка, переменные) => { console.log ( "полезная нагрузка, переменные", полезная нагрузка, переменные); возвращает истину; }}}})}); module.exports = подписки; Я использую graphiql для запуска запросов, // это используется для добавления сайта мутации {AddSite (название: «название теста», место нахождения: «где-то»
aqmattil
1

голосов
1

ответ
41

Просмотры

Узел и GraphQL Auth

Каков рекомендуемый метод обработки аутентификации пользователя и маркер создания с помощью Node / Graphql? Я вижу много учебников там, которые используют REST конечную точку для авторизации пользователя и создать маркер. В то время как я новичок в сцене GraphQL, я не вижу, почему бы вам не использовать GraphQL для этого. Например, почему бы не иметь запрос, как это, который отправляется в распознаватель, который проверяет пользователя / пропуск и генерирует маркер? : Мутация {loginUser (имя пользователя: «YOURUSERNAME», пароль: «ВАШ ПАРОЛЬ») {маркер}} Есть ли конкретная причина, что учебники я пережившие не сделали это таким образом? Есть ли какой-то изъян в этом методе, что я не в курсе?
BahaMagician
1

голосов
0

ответ
95

Просмотры

GraphQL: Что такое мутация возвратного типа для мангустов updateMany?

Рассмотрим следующую мутацию GraphQL обновить многие реестра на базе (MongoDB с мангуста): Const activateCustomers = {Тип: CustomerType, описание: «Активировать несколько клиентов», арг: {идентификаторами: {имя: «иды», тип: новый GraphQLList ( GraphQLID)}}, решительность (корень арг, контекст) {пусть критерии = {_id: {$ в: ид}}; вернуться CustomerModel.updateMany (критерии, {статус: "Активный"}, {много: истинный}); }}; При запуске, я получаю следующее сообщение об ошибке GraphQL: { "ошибка": [{ "сообщение": "Ожидаемое значение типа \" Клиент \», но есть: [объект Object]. " "Место": [{" линия ": 4, "колонок": 3}], "стек": "Ожидаемое значение типа \" Клиент \", но есть: [объект Object]. Запрос GraphQL (4: 3) 3:) {4: activateCustomers (идентификаторы: $ Идентификаторы) {^ 5: Идентификатор при invalidReturnTypeError (/workspace/customer/node_modules/graphql/execution/execute.js:766:10) при completeObjectValue ( /workspace/customer/node_modules/graphql/execution/execute.js:758:13) при completeValue (/workspace/customer/node_modules/graphql/execution/execute.js:660:12) в рабочем пространстве / / клиент / node_modules / graphql /execution/execute.js:617:14 на process._tickCallback (внутренних / процесса / next_tick.js: 68: 7)», "путь": [ "activateCustomers"
Mendes
1

голосов
0

ответ
132

Просмотры

Как расширяет схему в graphql-композе

Я использую graphql-Compose библиотеку. Я использую тип композитора для создания классов и добавить его в схемы композитор и строит схему. Как добавить (слияния) другую схему для схемы композитора? Или Как создать исполняемую схему и добавить (слияние) схемы, построенную схема композитор. Схема, что мне нужно добавить от APOLLO-загрузки-сервера. Его документы объявить схему следующим образом: Const схему = makeExecutableSchema ({ `: определения типов скалярной Upload`, арбитры: {Загрузить: GraphQLUpload}})
fl-web
1

голосов
1

ответ
284

Просмотры

Пустой кэш-память после стороны сервера оказывающего запроса в изоморфном приложении, с помощью Apollo GraphQL и React

У меня есть небольшая проблема с изоморфной JS приложения и, возможно, вы можете помочь мне с этим. Я после этого учебника: https://www.apollographql.com/docs/react/features/server-side-rendering.html в отношении ССР и в основном работает просто отлично. Первоначальный запрос оказывается правильно, так что это хорошо. Это кэш, что у меня болит голова ... Всякий раз, когда я называю client.extract () возвращает только пустой объект, так что мой отлично визуализации страницы получает перерисовываются как только код клиента умирает, поскольку кэш пуст. В этот момент я совершенно невежественны, почему это не работает. Я даже имел взгляд на примере Githunt но код в вопросе в основном то же самое в мое приложение, кроме различий в версиях пакета. Стек я использую: Docker композиция с MongoDB, "Реагировать-дом": "^ 16.4.1", "реагировать-маршрутизатор-дом": "^ 4.3.1", "стилизованных-компоненты": "^ 3.3.3"} Вещи, которые я пытался решить проблему: Удалить стилизованных компоненты Используйте getDataFromTree вместо renderToStringWithData Удалить композицию Докер и запустить его локально (Mac OS) Изменение пакета версии к версии в примере Githunt инициализация клиента на сервере: Const клиент = новый ApolloClient ({ssrMode: правда, ссылка: createHttpLink ( {URI: 'HTTP: // сервер: 5000 / graphql', принеси: выборка, учетные данные: 'включают', заголовки: {печенье: req.header ( 'Cookie'), происхождение: 'внешний интерфейс: 5000'},}) кэш: новый InMemoryCache ()}); На стороне клиента кэш работает просто отлично. Удалить стилизованных компонентов Используйте getDataFromTree вместо renderToStringWithData Удалить композицию Докер и запустить его локально (Mac OS) Изменение пакета версии к версии в примере Githunt инициализация клиента на сервере: Const клиент = новый ApolloClient ({ssrMode: правда, ссылка: createHttpLink ({URI: 'HTTP: // сервер: 5000 / graphql', принеси: выборка, учетные данные: 'включают', заголовки: {печенье: req.header ( 'Cookie'), происхождение: 'внешний интерфейс: 5000'}} ), кэш: новый InMemoryCache ()}); На стороне клиента кэш работает просто отлично. Удалить стилизованных компонентов Используйте getDataFromTree вместо renderToStringWithData Удалить композицию Докер и запустить его локально (Mac OS) Изменение пакета версии к версии в примере Githunt инициализация клиента на сервере: Const клиент = новый ApolloClient ({ssrMode: правда, ссылка: createHttpLink ({URI: 'HTTP: // сервер: 5000 / graphql', принеси: выборка, учетные данные: 'включают', заголовки: {печенье: req.header ( 'Cookie'), происхождение: 'внешний интерфейс: 5000'}} ), кэш: новый InMemoryCache ()}); На стороне клиента кэш работает просто отлично.
camo2601
1

голосов
0

ответ
132

Просмотры

Как решить ошибку 405 метод не допускается, за исключением Джанго graphql сервера и реагировать AXIOS в передней части

Привет я с трудом, чтобы решить эту проблему, я имею Джанго graphql сервера, который работает на мой локальную машине через порт 8000, когда я запрашиваю его в бессоннице все работает хорошо, но я интегрирование с фронтальным reactjs и Аксиосом я получаю сообщение об ошибке: XHR .js: 178 ВАРИАНТЫ http://127.0.0.1:8000/graphql/ 405 (Method Not Allowed) [введите описание изображения здесь] [1] Мой settings.py от graphql сервера Джанго Моего переднего конца запроса от ReactJs использования AXIOS: функция экспорта getProducts (Args = {}) {возвращение (отправка) => {// возможно, вы можете иметь GetState в качестве второго аргумента отправки ({типа: HOME_GET_PRODUCTS_BEGIN}); Const обещание = новый Promise ((решительность, отклонять) => {сопз запрос = {URL: 'http://127.0.0.1:8000/graphql/', метод: 'POST', заголовки: { "Accept": " вернуть обещание; }; } Пожалуйста, мне нужна помощь
Reagan SCOFIELD
1

голосов
0

ответ
226

Просмотры

Графен / Django (GraphQL): Как выполнить запрос с исключением некоторых полей от доступа?

Моя схема проста. Модель пользовательского пользователя из Джанго. Класс UserFilter (django_filters.FilterSet): класс Meta: поля модели = User = [ 'имя пользователя', 'электронная почта'] Класс UserNode (DjangoObjectType): класс Meta: модель = User only_fields = ( 'имя пользователя', 'электронная почта', ' is_staff», 'is_active', 'is_superuser', 'last_login', 'date_joined', 'профиль') интерфейсы = (graphene.relay.Node,) @classmethod защиту get_node (ЦБС, информация, идентификатор): попробуйте: пользователь = cls._meta.model.objects.get (ID = идентификатор), за исключением cls._meta.model.DoesNotExist: не возвращать None, если пользователь: запроса {пользователей {{края узла {имя пользователя идентификатор электронной isSuperuser}}}} Я получаю: { "данные": { "пользователей": { "ребра": [{ "узел": { "ID": "VXNlck5vZGU6NQ ==" , "имя пользователя": "Test4", "электронная почта": "[email protected]", "isSuperuser" ложь}}]}}} можно ли как разграничить доступ к полям в resolve_users? Исключение в фильтре не работает. Возможно, я не правильно понимаю конструкцию DjangoFilterConnectionField,
1

голосов
1

ответ
148

Просмотры

GraphQL- условно определить тип поля в схеме

// метод решительности код здесь идет}})}) Как указано в комментариях AuthorType, мне нужно поле учетной записи, чтобы разрешить администратор или Работнику в зависимости от значения поля учетной записи в базе данных. Как я условно определить тип поля в схеме на лету?
Nahashon Njenga
1

голосов
0

ответ
50

Просмотры

Returning both data and an error in a resolver

В выпуске 591 leebyron состояний, которые вы можете вернуть данные и ошибку в распознаватель (согласно спецификации), возвращая массив, например, решительность () {вернуться [ «значение», новый Error ( «второе значение отсутствует»), " значение»]}, но это не работает. Я бы подумал, что должно работать (с изменениями от начала работы): импорт {graphql, buildSchema} от «graphql» // Построить схему, используя GraphQL схемы языка вар схемы = buildSchema ( `тип запроса {привет: String} `) // корень обеспечивает функцию распознавателя для каждого корня API конечной точки вар = {привет: () => {вернуться [ 'Привет, мир!', новый Error ( 'апокалипсис')]}} // Выполнить запрос GraphQL" {привет}»и распечатать graphql ответа (схемы, '{} привет', корень) .then ((ответ) => {Console.log (ответ)}) и должен возвращать {данных: {привет: 'Привет, мир!' } Ошибка: [{сообщения: «апокалипсис»}]} Так как я должен возвращаться как данные, так и ошибки в распознавателе? Я в настоящее время тестирования это с graphql (JS) версии 0.13.2
ESBDB

Просмотр дополнительных вопросов