我使用 Angular 13 和 apollo-angular 3.0.0。我有进行 GraphQL 查询的代码:
const GET_TODOS = gql`
query GetTodos() {
todos() {
id
title
brief
body
tags
created_at
updated_at
author {
id
nickname
avatar
created_at
updated_at
}
}
}`;
const GET_TODO_BY_ID = gql`
query GetTodosById($id: String!) {
todos(id: $id) {
id
title
brief
body
tags
created_at
updated_at
author {
id
nickname
avatar
created_at
updated_at
}
}
}`;
getTodos(): Observable<any> {
return this.apollo.watchQuery({
query: GET_TODOS,
variables: {},
}).valueChanges;
}
getTodoByID(id: string): Observable<any> {
return this.apollo.watchQuery({
query: GET_TODO_BY_ID,
variables: { id },
}).valueChanges;
}
GET_TODOS
和GET_TODO_BY_ID
对象中都有重复的代码。
有没有办法减少重复的代码,这样我就可以定义一次 and 的结构Todo
并重Author
用该结构来制作GET_TODOS
或GET_TODO_BY_ID
查询。
我知道 GraphQL 中的 Fragment,但我不知道如何用 Angular 编写 Fragment。有人可以帮助我吗?