2017-08-24 13 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}); 
     } 
     } 
    }; 
    } 
}); 

、私はそれらを使用できるようにと最初オフセット変数を作成しました。

{ 
    allPosts() { 
    id 
    } 
} 

をそして、それは正確にすべての私の記事を取得します。インサイド私graphiQLインタフェースに私はこれを行うことができます。

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

"メッセージを":私はこれを行うにしようとした場合しかし、 "不明な列 'post.offsetを' 'where句' に"、 Sequelizeで

答えて

1

offsetwhereとは別のオプションがあります。 Sequelizeにはfirstオプションもありませんが、limitがあります。あなたはfindAllがサポートするすべてのオプションを表示するドキュメントhereをチェックアウトすることができます

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

:あなたのような何かを行うことができます。

+0

ああ、それです!私は間違った場所で探していた!私はSequelizeの文書を見ていたはずです!どうもありがとうございます! – Amir

0

あなたのDBに直接引数を渡すことには非常に注意が必要ですが、明快さのポイントとして、私はGraphQLがあなたのためにページ分割をしないと言うべきです。あなたはやっているようにargsを渡すことができますが、誰にでもデータが得られるので、どこに置くか、どのように使用するのかについて正しい答えはここにありません。

+0

どういう意味ですか?他にどのようにページを設定して検索クエリを実行する必要がありますか?より安全な方法がありますか? – Amir

関連する問題