0

我使用 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_TODOSGET_TODO_BY_ID对象中都有重复的代码。
有没有办法减少重复的代码,这样我就可以定义一次 and 的结构Todo并重Author用该结构来制作GET_TODOSGET_TODO_BY_ID查询。

我知道 GraphQL 中的 Fragment,但我不知道如何用 Angular 编写 Fragment。有人可以帮助我吗?

4

0 回答 0