首页 > 解决方案 > vue-apollo 在路由器保护中执行 graphql 查询

问题描述

我有一个应用程序,用户可以在其中注册活动。一旦用户注册,他就可以访问他以前无法访问的路线。

我正在为我的 api 请求使用 graphql。我的路由守卫中的代码如下所示:

router.beforeEach(async (to, from, next) => {
  if (to.meta.signUpRequired && from.name) {
    const { data: { getCurrentUser } } 
      = await apolloProvider.defaultClient.query({
      query: USER_INFO_QUERY
    });
    if (getCurrentUser && getCurrentUser.isCollectionAttendee) {
      return next();
    }
    return next('/');
  }
  return next();
});

这工作正常,并且每次路由更改时都不会执行请求,因为 vue-apollo 缓存了结果。我的问题是,如果用户注册然后尝试切换路线,他不能,因为查询的缓存结果仍在使用。

我不想在每次路由更改之前使用仅限网络的 fetchPolicy。

我该如何解决这个问题?

标签: javascriptvuejs2graphqlvue-apollo

解决方案


也许在注册后尝试使用this.$apolloProvider.defaultClient.resetStore()


推荐阅读