Почему нет данных после первого входа? - PullRequest
0 голосов
/ 27 апреля 2020

Уважаемые vue и пользователи apollo;

Я имею дело с при первой установке проблема.

При первом запуске приложения я не получить результаты.

Я использую ApolloClient, InMemoryCache, HttpLink из "apollo-boost"

Я храню свои userID и JWT в ApplicationSettings (локальное хранилище)

Как установить токен динамически?

Vue.use(VueApollo);
const httpLink = new HttpLink({
    uri: "https://sebapi.com/graphql"
});
const authLink = setContext((_, { headers }) => {
    // get the authentication token from ApplicationSettings if it exists
    var tokenInAppSettings = ApplicationSettings.getString("token");
    // return the headers to the context so HTTP link can read them
    return {
        headers: {
            ...headers,
            authorization: tokenInAppSettings
                ? `Bearer ${tokenInAppSettings}`
                : null
        }
    };
});
export const apolloClient = new ApolloClient({
    link: authLink.concat(httpLink),
    cache: new InMemoryCache()
});

const apolloProvider = new VueApollo({
    defaultClient: apolloClient
});

Я создал проблему воспроизведения репозитория GitHub

и видео YouTube о проблеме

Нет ошибки при входе в систему, но после первого перехода на страницу списка я получил следующие ошибки ...

JS: [Vue warn]: Invalid prop: type check failed for prop "items". Expected Array, Object, got Undefined

JS: Error sending the query 'birds' ServerError: Response not successful: Received status code 400

У ЭТОГО АПОЛЛО НЕ ВИДЕТСЯ ИД пользователя во время первого запроса .

ПРИМЕЧАНИЕ : Вы можете легко очистить данные пользователя, используя yarn cl script

# debug app without HMR
yarn devn
# clear user data of app
yarn cl

1 Ответ

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

Репозиторий с использованием vuex:

https://github.com/kaanguru/data-firstlogin/tree/user-in-vuex

Переместить ID пользователя в vue экземпляр

+ welcome.vue +

//const userId = ApplicationSettings.getNumber("userID");
// I have moved userID into vue.

export default {
  data() {
    return {
      birds:[],
      bird:{
        id: null,
        isim: "",
        bilezik: ""
      },
      userId: ApplicationSettings.getNumber("userID")
    };
  },

  apollo: {
    birds: {
      query: gql`
        query myBirds($userId: ID!) {
          birds(where: { user: $userId }) {
            id
            isim
            bilezik
          }
        }
      `,
      variables() {
        return {
          userId: this.userId,
        };
      },
    },
  },
};
...