Vue 3中的反应性查询Apollo GraphQl

发布于 2025-02-12 09:47:06 字数 1808 浏览 1 评论 0 原文

尝试根据 https://v4.apollo.vuejs.org/guide-option/queries.html#reaeactive-query-definition ,但我无法让他们上班。

错误:

未被发现(在承诺中)错误:无效的ast节点:{query:{chink:nocument'',定义:[array],loc:[object]},loadingKey:“ loading”}。

查询内部导出默认值(检查是一个反应性布尔 v-model 'ed to data(data())定义的按钮:

apollo: {
    getTags: getTags,
        getPhotos: {
        query() {
            if (this.checked)
                return {
                    query: getPhotos,
                    loadingKey: "loading",
                }
            else {
                return {
                    query: getPhotosByTag,
                    loadingKey: "loading",
                }
            }
        },
        update: (data) => data.getPhotos || data.getPhotos,
        },
},

gql getPhotoSbyTag:

const getPhotosByTag = gql`
    query getPhotosByTag {
        getPhotos: findTagByID(id: 326962542206255296) {
            photos {
                data {
                    name
                    description
                    _id
                }
            }
        }
    }
`

gql getphotos:

const getPhotos = gql`
    query getPhotos {
        getPhotos: getPhotos(_size: 50) {
            data {
                name
                description
                _id
            }
        }
    }
`

如果我将它们带到单独的查询中并尝试尝试使用并尝试尝试更新使用检查!检查在查询定义中,只有初始加载才能提供查询,如果我单击按钮新查询不会启动。查询自己可以很好地工作。

Trying to make a reactive query as per https://v4.apollo.vuejs.org/guide-option/queries.html#reactive-query-definition, but I can't get them to work.

Error:

Uncaught (in promise) Error: Invalid AST Node: { query: { kind: "Document", definitions: [Array], loc: [Object] }, loadingKey: "loading" }.

Query inside export default (checked is a reactive boolean v-model'ed to a button defined in data()):

apollo: {
    getTags: getTags,
        getPhotos: {
        query() {
            if (this.checked)
                return {
                    query: getPhotos,
                    loadingKey: "loading",
                }
            else {
                return {
                    query: getPhotosByTag,
                    loadingKey: "loading",
                }
            }
        },
        update: (data) => data.getPhotos || data.getPhotos,
        },
},

GQL getPhotosByTag:

const getPhotosByTag = gql`
    query getPhotosByTag {
        getPhotos: findTagByID(id: 326962542206255296) {
            photos {
                data {
                    name
                    description
                    _id
                }
            }
        }
    }
`

GQL getPhotos:

const getPhotos = gql`
    query getPhotos {
        getPhotos: getPhotos(_size: 50) {
            data {
                name
                description
                _id
            }
        }
    }
`

If I take them out into separate queries and try to instead update use skip() via checked and !checked in the query definition, only the initial load delivers a query, if I click the button new query doesn't launch. Queries work by themselves fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℡Ms空城旧梦 2025-02-19 09:47:06
apollo: {
    getPhotos: {
        query() {
            return this.checked ? getPhotos : getPhotosByTag
        },
        loadingKey: "loading",
        update: (data) => data.getPhotos || data.getPhotos,
    },
},

加载密钥必须与查询相同的级别

apollo: {
    getPhotos: {
        query() {
            return this.checked ? getPhotos : getPhotosByTag
        },
        loadingKey: "loading",
        update: (data) => data.getPhotos || data.getPhotos,
    },
},

Loading key has to be on the same level as query

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文