Как установить URI ссылки Apollo для запроса - исходный URI остается, если я использую динамический URI (угловой 8)

Резюме

Я создаю простое поисковое приложение в Angular 8, использующее Apollo с сервером GraphQl поверх эластичного поиска; Я передаю эластичный запрос бэкенду в URI, затем запросы graphql выполняются в пределах эластичных возвращаемых данных. Однако URI устанавливается при первом создании Apollo, а затем не изменяется для последующих запросов в этом сеансе.

Фон

Как начинающий разработчик Angular/Apollo, я только пытаюсь достичь начальной реализации для будущего инструмента поиска; Я рассмотрел graphql-compose-astic, но он выглядит громоздким, по крайней мере, для немедленной необходимости в прототипе. Я попытался переместить объявления Apollo в подмодуль, используя URI как глобальный или через localStorage, но клиент не будет сбрасывать URI после запроса 1. Я все еще получаю результаты (без ошибок), но они всегда одинаковы записи возвращены из запроса 1.

Текущий код

У меня есть graphql.module.ts, который создает httpLink, и в настоящее время во время выполнения он выбирает параметры строки URI (включая эластичный поиск) из localStorage:

в компоненте для результатов поиска (используя Form + ag-grid) он устанавливает переменную localstorage uricombo:

search.component.ts

uricombo = 'http://graqhql.server.internal:9000/graphql/esindex1/_search?q=title:beginners'

graphql.module.ts

httpLink.create({ uri: localStorage.getItem('uricombo') })

search.component.ts

this.querySubscription = this.apollo.watchQuery<any>({ query: AllBooksQuery, })

... который возвращает строки данных в ag-grid.

Это нормально, но когда пользователь отправляет последующие поиски, используется исходный uri, и те же записи возвращаются снова.

Хранится uricombo значение определенно обновляется для каждого запроса поиска, в то время как метод создания ссылки Apollo запускается только один раз (в первый раз).

В настоящее время предполагается, что после создания клиента apollo он сохраняет URI, но я не уверен, как это изменить, чтобы обновить URI - я подозреваю, что динамический URI поможет, но не совсем ясно, как его реализовать.

Как я уже сказал, относительно новичок в Angular и Apollo (хотя долгое время занимался Java-жокеем) - возможно, я занимаюсь чем-то нудистским. Любая помощь / шаблоны / примеры высоко ценится

0 ответов

Я смог решить эту проблему, просто назвав экземпляр apollo, а не полагаясь на экземпляр по умолчанию:

this.apollo.create({ cache: new InMemoryCache(), link: this.httpLink.create({ uri: localStorage.getItem('uricombo') + localStorage.getItem('searchTerms') }) }, 'name1');

После этого метод запроса обновлял результаты при каждой отправке.

Другие вопросы по тегам