2017-08-24 68 views
0

我想創建通過我的數據分頁的能力,但我不知道我需要放置分頁變量的位置。如何在我的模式中定義分頁參數?

以下是我在我的架構:

const Query = new GraphQLObjectType({ 
    name: 'Query', 
    description: 'This is a root Query', 
    fields:() => { 
    return { 
     allPosts: { 
     type: new GraphQLList(Post), 
     args: { 
      offset: { 
      type: GraphQLInt 
      }, 
      first: { 
      type: GraphQLInt 
      } 
     }, 
     resolve(root, args) { 
      return Db.models.post.findAll({where: args}); 
     } 
     } 
    }; 
    } 
}); 

在我指定參數時,我已經創建的變量偏移第一才能夠使用它們。在裏面我graphiQL界面我可以這樣做:

{ 
    allPosts() { 
    id 
    } 
} 

並正確檢索我的所有文章。但是,如果我嘗試這樣做:

{ 
    allPosts(offset:10, first: 10) { 
    id 
    } 
} 

「消息」: 「在 'where子句' 未知列 'post.offset'」,

回答

1

在Sequelize,offsetwhere一個單獨的選項。 Sequelize也沒有first選項,但它的確有limit。你可以這樣做:

resolve(root, { offset, first: limit }) { 
    return Db.models.post.findAll({offset, limit}); 
} 

您可以檢查出的文檔here地看到findAll支持的所有選項。

+0

啊,就是這樣!我在錯看地方!我應該一直在看Sequelize文檔!非常感謝! – Amir

0

我會非常小心地直接將參數傳遞到您的數據庫,但作爲一個清晰點,我應該說GraphQL不會爲您分頁。你可以像你在做的那樣傳遞參數,但是這裏沒有正確的答案,關於在哪裏放置或如何使用它們,因爲每個人都以他們的方式獲取數據。

+0

嗯你是什麼意思要小心?我還應該怎樣分頁並做搜索查詢?有沒有更安全的方法? – Amir

相關問題