Hasura の query の where に配列を与えて複数の値で絞り込む
Tweetwhere で _in
を使うことで配列を渡せる
Hasura で query を定義する際に、where
を使って絞り込むことが可能ですが、絞り込みに使う値が配列の場合には _in
を使います。例えば user_id
の配列を _in
に渡すことで、複数人の user の tweet だけに絞り込む、といったことが可能になります。
単一の場合
まずは通常の、単一の値で絞り込むケースをみてみましょう。
user_id
が指定した id である tweet だけを取得します。
これだと、例えば userId = "1", "100", "190"
の三人のツイートをみたい場合に困ってしまいます。
gql`
query myTimeline($userId: String!) {
tweet(where: { user_id: { _eq: $userId } } {
title
date
}
}
`;
_in
に配列を渡す
そういった場合に _in
を使用します。
userIdList
には ["1", "100", "190"]
のような配列がわたってきます。
こうすることで userId = "1", "100", "190"
の三人のツイートだけを取得することができます。
gql`
query myTimeline($userIdList: [String!]!) {
tweet(where: { user_id: { _in: $userIdList } }) {
title
date
}
}
`;