supabase().
select('count(*)')
.from('hoge')
.then((res) => {
console.log(res)
})
こんな感じでいけるだろうと書いてみるとSELECT句がおかしいよーというエラーを吐かれた。少し調べてみると、selectの引数にオプションを渡せることがわかった。
https://supabase.com/docs/reference/javascript/select
count
を指定するとどの様に算出するかを決められる。
- exact: 計算は遅いけど正確な値を算出
- planned: おおよその値だがpostgresの統計情報を使って速く算出
- estimated: 少数であればexactとして機能、量が多くなるとplannedとして機能
head
をtrue
にするとresultにdata
を含まない。(実装していてわかったが、dataの代わりにcountが出現する。)
今回の用途としてはページングの際の最大量を取りたいのでexact
を指定して正確な値を取得。レコード自体は別のクエリで取得するためhead
はtrue
を設定。
supabase().
select('*', {count: 'exact', head: true})
.from('hoge')
.then((result) => {
console.log(result.count)
})
こんな感じでCountが取れましたとさ。