2017-03-24 1 views
0

를 사용하여 루트 쿼리 필드를 Paginating 특정 노드를 만들었지 만 RootQuery에서 필드를 페이지 매기기를 원합니다. 내 RootQuery은 다음과 같습니다가입 괴물 라이브러리 (GraphQL) 나는 문서 다음 조인 괴물 라이브러리와 애플리케이션 계층 페이징을 구현하기 위해 사투를 벌인거야

const RootQuery = new GraphQLObjectType({ 
    name: "Query", 
    articles: { 
     type: new GraphQLList(ArticleType), 
     args: {}, 
     resolve(parentValue, args, context, resolveInfo) { 
     return joinMonster(
      resolveInfo, 
      {}, 
      sql => { 
      return knex.raw(sql).then(result => { 
       return result[0]; 
      }); 
      }, 
      { dialect: "mysql" } 
     ); 
     } 
    } 
    }) 
}); 

나는 기사 필드 페이지를 매기는 할, 그래서 접속으로 바꿀 것을 시도했다 :

const RootQuery = new GraphQLObjectType({ 
    name: "Query", 
    fields:() => ({ 
    articles: { 
     type: ArticleConnection, 
     args: gqlUtils.connectionArgs, 
     resolve(parentValue, args, context, resolveInfo) { 
     return joinMonster(
      resolveInfo, 
      {}, 
      sql => { 
      return knex.raw(sql).then(result => { 
       return gqlUtils.connectionFromArray(result[0], args); 
      }); 
      }, 
      { dialect: "mysql" } 
     ); 
     } 
    } 
    }) 
}); 

하지만에 대해 쿼리를 실행할 때, 내가 할 오류

함수는 각 개체가 결과 집합의 행 인 개체 배열을 반환하거나 해결해야합니다. 대신 {edges ...

그리고 지금은 붙어 있습니다. 나는 그것을 잘못된 방향으로 접근하고 있는가? 어떻게해야합니까?

감사합니다. 거의 옳았다

답변

0

, 문제는 내가 joinMonster에 데이터를 전송하기 전에 "connectionFromArray"을 호출되고, 분명히 나중에 호출 할 점이다 :

const RootQuery = new GraphQLObjectType({ 
    name: "Query", 
    fields:() => ({ 
    articles: { 
     type: ArticleConnection, 
     args: connectionArgs, 
     resolve(parentValue, args, context, resolveInfo) { 
     return joinMonster(
      resolveInfo, 
      {}, 
      sql => { 
      return knex.raw(sql).then(result => { 
       return result[0]; 
      }); 
      }, 
      { dialect: "mysql" } 
     ).then(data => connectionFromArray(data, args)); 
     } 
    } 
    }) 
});