Обновить заголовок после инициализации ApolloProvider - PullRequest
0 голосов
/ 23 апреля 2020

Я использую uploadLink для установки заголовков, используемых для отправки запросов на мой сервер Apollo (см. Код ниже). Однако после входа в систему я хотел бы сбросить заголовок, потому что «organizationid», который также включен в заголовок, еще не доступен в локальном хранилище во время инициализации провайдера Apollo. «Организационный идентификатор» я получаю только с сервера Apollo из запроса после входа в систему.

const {othertoken} = queryString.parse(window.location.search)

const header = {
    Authorization: ' Bearer ' + localStorage.getItem('accounts:accessToken'),
    othertoken,
    organizationid: localStorage.getItem('organizationId')
}

const uri = CONFIG.graphQLServerTest

const uploadLink = createUploadLink({uri, headers: header})
const cache = new InMemoryCache()

const apolloClient = new ApolloClient({
    cache,
    resolvers: merge(dashboardStore.resolvers, collectionStore.resolvers, templateStore.resolvers, documentStore.resolvers) as any,
    link: ApolloLink.from([errorLink, uploadLink])
})


cache.writeData({data: collectionStore.defaults})
cache.writeData({data: dashboardStore.defaults})
cache.writeData({data: documentStore.defaults})
cache.writeData({data: templateStore.defaults})

const accountsGraphQL = new GraphQLClient({graphQLClient: apolloClient})
const accountsClient = new AccountsClient({}, accountsGraphQL)
const accountsPassword = new AccountsClientPassword(accountsClient)

export {accountsClient, accountsGraphQL, accountsPassword, apolloClient}

Мне нужен «организационный идентификатор», включенный в каждый из запросов, отправляемых на сервер во всех запросах. после того, как я сохранил его в локальном хранилище. Для этого мне нужно повторно инициализировать заголовок после сохранения 'Organizationid' в локальном хранилище. Есть ли способ сделать это?

Я бы хотел не указывать в качестве параметра запроса 'Organizationid'.

1 Ответ

0 голосов
/ 23 апреля 2020

Мне удалось решить проблему с помощью authLink, созданного с помощью setContext:

const authLink = setContext((_, {headers}) => {
    return {
        headers: {
            ...headers,
            organizationid: localStorage.getItem('organizationId')
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...