😱

Supabaseからデータを取得できない!

2024/03/25に公開3

いろんな記事や公式のドキュメントを参考にしているのに、Supabaseからデータを取得できない!

以下の記事を参考に、Flutterを使ってSupabaseから1回だけデータを取得したいと思っていました。
https://zenn.dev/flutteruniv_dev/articles/e75597a1cbef19

今回は、sampleというテーブルを用意して、strというカラムにあるデータを取得しようと思います。

なので、記事を参考にすれば、データを取得するコードは以下のようになるはずです。

final sampleFutureProvider =
    FutureProvider<List<Map<String, dynamic>>>((ref) async {
  final response = Supabase.instance.client.from('sample_db').select('str');
  return response;
});

しかし結果は以下の通り...

[]

空配列やないか!!!

URLやアノンキーは合っているし、コードも間違ってないはずだし何が違うの〜!!!???

解決策

以下の記事に解決方法がありました!
https://zenn.dev/kazu0429/scraps/9edd2ee3df9fdb

どうやらPolicyを作る必要があるようです。

実際にやってみた

  1. プロジェクトページに入ってDatabaseのページに遷移します。
  2. Policyを追加したいテーブルを選び、1番右のアイコンをクリックして、View tableをクリックします。
  3. Add RLS policyをクリックします。
  4. New Policyをクリックします。
    (No policies created yetとあるので、まだPolicyが作られていないのがわかります)
  5. Get started quicklyをクリックします。準備されたテンプレートからポリシーを作ることができます。
  6. Enable read access to everyoneを選んでUse this templateをクリックします。
  7. Policyの設定をします。今回はサンプルなので特に設定していませんが、ドキュメントを参照してお好みにカスタマイズしてください。設定が終わったらReviewをクリックします。
  8. Policy作成に使用されるSQL文が表示されます。問題なければSave Policyをクリックします。
  9. 先ほど設定したPolicyが確認できます。

おわりに

ここまでたどり着くのにめちゃくちゃ苦労しました。
ちゃんとPolicyのセットアップが必要だという事を、ドキュメントを読んで頭に入れておくのが重要ですね〜。

Discussion

JboyHashimotoJboyHashimoto

すいませんね。Supabaseって、罠があるんですよ。
仕事で最近使ってるんですけど、他の人は許可の設定知らなくて、エラーの原因になってます。

私の記事真似する人多みたいなんですけど、公式チュートリアルや動画を先にやってみた方がいいですね。
僕はタイラーさんの動画や公式のチュートリアルをなん度もやって使い方に慣れました。

https://www.youtube.com/watch?v=F2j6Q-4nLEE&list=PL5S4mPUpp4OtkMf5LNDLXdTcAp1niHjoL

ヨシカワヨシカワ

いえいえ、有益な記事を執筆いただきありがとうございます。

そうですね、先に公式のチュートリアルやドキュメントを取り組む/読む癖をつけといたほうがいいな〜と私も思いました。
チュートリアルも共有いただきありがとうございます!

JboyHashimotoJboyHashimoto

Supabaseで困ったら、Xで投稿するとタイラーさん反応してくれるので、やってみるといいかもですね〜