Angular + Graphql + Apollo-两个WatchQuery ngOnInit

时间:2018-08-31 03:42:48

标签: angular observable graphql subscription apollo

我正在使用Angular 6和GraphQL进行项目。我正在阅读各种不同的实现,有些实现了,有些则没有。 特别是,我需要在需要时执行GraphQL查询,但是Angular不做任何事情,例如,如果我在ngOnInit方法中有两个不同的watchQuery:

  ngOnInit() {

    this.fieldbookList = this.apollo.watchQuery<Query>({
        query: gql`
        query getAllFieldBook
            {
              allFieldBook {
                _id
                field_number
                lote
                variety
              }
            }
        `,
        fetchPolicy: 'no-cache'
    })
    .valueChanges
    .pipe(map(
        result => result.data.allFieldBook
        ));

    this.usuarios = this.apollo.watchQuery<Query>({
        query: gql`
        query getUsers($perfil:String!){
          allUsers(perfil:$perfil){
            username
            nombre
            perfil
            apellido_paterno
            apellido_materno
            email
            rut
          }
        }
        `,
        variables: { perfil : "Cliente" },
        fetchPolicy: 'no-cache'
    })
    .valueChanges
    .pipe(map(
        result => result.data.allUsers
        ));
  }

第一个查询进行得很好。第二个,什么也不做。我真的不明白为什么这行不通。

两个对象的定义都是可观察的:

export class ListComponent implements OnInit {

  fieldbookList: Observable<FieldbookSearch[]>;
  usuarios: Observable<Usuarios[]>;

这里的主要问题是,我需要将变量从第一个结果传递到第二个查询,但是第二个则永远不会通过网络。在调试器控制台中,我只看到一个对graphql的调用,而不是两个都显示:

Debugger Console Image

也许这种方法行不通?您是否遇到过此类问题?我已经通过了三个晚上试图解决这个问题。任何解决此问题的良好链接都将受到欢迎,或者提供任何信息。

已经阅读this

谢谢!

0 个答案:

没有答案