Я экспериментирую с использованием vue-apollo
с nuxt
, реализуя модуль @nuxtjs/apollo
.У меня работает GraphQL сервер, работающий на localhost:4000
.Я написал следующий код:
<template>
<div>
<p v-for = "item in stuff" :key="item.id">item.name</p>
</div>
</template>
<script>
import stuff from '~/apollo/queries/stuff'
export default {
apollo: {
stuff: {
query: stuff,
variables: {
limit: 10
}
}
},
data () {
return {
stuff: []
}
}
}
</script>
stuff.gql:
{
stuff {
id
name
}
}
client-config:
import { ApolloLink } from 'apollo-link'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
export default (ctx) => {
const httpLink = new HttpLink({ uri: 'http://localhost:4000' })
// middleware
const middlewareLink = new ApolloLink((operation, forward) => {
const token = process.server ? ctx.req.session : window.__NUXT__.state.session
operation.setContext({
headers: { authorization: `Bearer ${token}` }
})
return forward(operation)
})
const link = middlewareLink.concat(httpLink)
return {
link,
cache: new InMemoryCache()
}
}
Наблюдательный читатель увидит, что я в основном скопировал код примера из документации.Я ожидал, что объект данных моего vue
компонента будет обновлен с использованием первых 10 результатов из моего бэкэнда.Тем не менее, я вижу все в $apolloData
объекте, который недоступен из компонента.Также данные не ограничиваются первыми 10
записями.Может ли кто-нибудь указать, что я делаю не так?Потому что я этого не вижу.
Я также пробовал:
apollo: {
products: {
query: stuff,
variables () {
return {
limit: 10
}
}
}
}
И со всеми вариациями опции prefetch
.