如何在Apollo中运行异步功能并为每个请求设置标头?

时间:2018-11-09 16:28:25

标签: apollo react-apollo apollo-client

假设我要获取firebase身份验证令牌并将其设置为每个请求。要获取Firebase身份验证令牌,我需要向Firebase服务器发送一个异步调用。只有完成后,我才能获得令牌。我试图按如下所示进行设置。但是在我从Firebase获得令牌之前,阿波罗先发送了请求。我怎样才能解决这个问题?如何让阿波罗等待?

export const client = new ApolloClient({
  uri: 'http://localhost:4000/',
  request: async operation => {
    await firebase.auth().onAuthStateChanged(async user => {
      if (user) {
        const token = await firebase.auth().currentUser.getIdToken(/* forceRefresh */ true);

        operation.setContext({
          headers: {
            authorization: token ? `Bearer ${token}` : ''
          }
        });
      }
    });
  }
});

0 个答案:

没有答案