Как установить 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');
После этого метод запроса обновлял результаты при каждой отправке.