Closed10

supabaseとFlutterFLow色々

miyaromiyaro

FlutterFlowでAPIコールを設定するときに、クエリパラメーターを渡すタブはあるが、パスパラメーターはどうやって埋め込むねん。
と思っていたら既にAPI URLを入れる箇所のプレースホルダーに記載のサンプルがあった。
url/[path_parameter] でよさげらしい。

そしてpath_parameter をVariablesに登録しておいてやればよい。

miyaromiyaro

FlutterFlowでsupabaseのEdge Functionsを呼び出すとき
ヘッダーにAuthorization : Bearer [anon_key] 入れるとapikeyがヘッダーにないよ!というエラーが返ってきた。

chatGPTになんで?と聞くとapikey: [anon_key] という形でヘッダーに入れろと言われたので言う通りにしたら通った。

============
追記 どうやらAuthorizationヘッダーもいるようである。

apikeyにはsupabaseの認証キー(anon key)、Authorization Headerにはユーザーの認証キーを入れるとのこと。
https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts

miyaromiyaro

supabase edge functionでAPIを作ったものの、FlutterFlowから叩くと200にはなるが、データが返ってこないと思ったらRLSがtrueになっていたのでデータが返って来てなかった。

selectができるようポリシーを作成したら通るようになった。

miyaromiyaro

メモ
DataTableウィジェットに対してAPIから取得したデータを入れたいのだが、やり方がわからんので調査する。

miyaromiyaro

画像をFlutterFlowからsupabase strageに対してアップロードしたいのだが、うまく動作しないので要調査。

==追記============

バケットポリシーをinsert設定していないだけだった。

miyaromiyaro

FlutterFlowからsupabaseに対してテーブルをジョインしてデータを引き出したいのだが、Edge FunctionかDatabase functionを使うしかないのだろうか。。もっと手軽にやりたいのだが、、、

Database functionは上手く扱えなかったのでしゃーなしでEdge functionを使っている。

miyaromiyaro

supabase-jsでテーブルをjoinしてデータを取得する方法

ちょっと困ったのでメモ

const { data, error } = await supabase
  .from('table')
  .select(`
    colummn_name,
    joined_table (
      colummn_name
    )
  `)

という具合にすればよいのだが、joinしたテーブルから2個以上カラム指定するとエラーになる。何故。


追記

const { data, error } = await supabase
  .from('table')
  .select(`
    colummn_name,
    joined_table (
      column_name_1,
      column_name_2
    )
  `)

という具合に書いたら通った。

const { data, error } = await supabase
  .from('table')
  .select(`
    colummn_name,
    joined_table (
      column_name_1
    ),
    joined_table (
      column_name_2
    )
  `)

という感じでjoinしたテーブル2回書いてしまっていたので動かなかった模様。

発行されるクエリを考えればそれはそうである。


https://supabase.com/docs/reference/javascript/select?example=query-referenced-tables-through-a-join-table

miyaromiyaro

supbase edge functionsの環境変数名

supabase edge functionsを使っていて、stripeでの決済処理を作っているのだが、stripeのAPIキーを環境変数から読み込めず困っていた。

どうやらenvファイルを置く場所を間違えていたようで、supabase/functions/.env に置くと、supabase startしたときにロードしてくれるらしい。
トップレベルにおいていたので、どうやら読み込んでくれていなかった模様。

ちなみに、
SUPABASE_URL、SUPABASE_ANON_KEY、SUPABASE_SERVICE_ROLE_KEY、SUPABASE_DB_URL
などはデフォルトでアクセス可能らしいので、envをどこに置くとか関係ないっぽい。

ちなみに、変数名をSUPABASE_で始めると怒られるので注意。エンドポイントのURLをSUPABASE_URLのようにしていたら起動できなかった。

https://supabase.com/docs/guides/functions/secrets

miyaromiyaro

FlutteFlowでアラートを出す

FlutterFlowで管理画面を作っており、データの作成などした際に何の反応もないとまずいのでアラートを出す。

Action Flow Editorを開き

Insert Rowのブロック下の+ボタンを押し、Add Actionを選びInoformation Dialogを選択する

Titile ValueをInsert時の名前など(Widget StateのText Fieldなど)好きなデータを入れ、Message Valueに「作成しました」などを入れると

こういうアラートが出るようになる。

おそらくAction Blockの順番を入れ替えることで、「作成しますか?」系のダイアログを表示し、ユーザーがはいを押すと、Insert Rowするようなものも作れると思われる。

できることなら、Backend CallのInsert Rowが成功した場合は正常系のアラート、失敗した場合は異常系アラートを出す。ようなことがしたいがその方法はわからなかった。(そもそもそんな分岐を作れるかも不明)

miyaromiyaro

supabaseでauth.usersにroleを付与したい

管理画面を作る必要があり、ユーザーにroleを付与したい。
custom-claimにroleをadminなりmanagerなりで登録して、tableのRLSでその権限を見るようにすればOK。

でもよく見たら、auth.usersテーブルにroleってカラムもあるのでどちらを使えばいいのかはなぞ。

https://github.com/supabase-community/supabase-custom-claims?tab=readme-ov-file#faq

このスクラップは2023/12/25にクローズされました