apollo vue переменная запроса не распознает данные из переменной страницы - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть следующая настройка запроса apollo. Я хочу передать имя пользователя динамически, но this.username не распознается.

Мой код:

export default {
  data () {
    return {
      username: ''
    };
  },
  beforeCreate () {
    this.$Auth
      .currentAuthenticatedUser()
      .then((userProfile) => {
        this.username = userProfile.username;
      })
      .catch(() => this.$router.push({ name: 'auth' }));
  },
  apollo: {
    services: {
      query: gql(servicesByUser),
      variables: {
        username: this.username
      },
      update: (data) => {
        console.log('apollo:services', data);
        return data.servicesByUser.items;
      },
    },
  },
};

Настройка с жестким кодом работает:

variables: {
  username: "user-a"
},

Эта настройка не работает:

variables: {
  username: this.username
},

Ошибка :

TypeError: Cannot read property 'username' of undefined
    at Module../node_modules/babel-loader/lib/index.js?!./node_modules/@quasar/app/lib/webpack/loader.auto-import.js?

Я потратил на это несколько часов, но так и не смог разобраться в проблеме! Я что-то пропустил? Любая помощь очень ценится!

1 Ответ

1 голос
/ 12 апреля 2020

variables должна быть функцией для определения this, как показано в документах :

apollo: {
  services: {
    ...
    variables () {
      return {
        username: this.username,
      }
    },
  },
},
...