ホームページ  >  に質問  >  本文

Supabase - 無限値と同等

<p>認証フローでは、ミドルウェアで、<code>.eq</code> ステートメント内の任意の値と一致させたいと考えています。一般ユーザーは自分が作成した投稿のみを閲覧できます。管理者はすべての投稿を閲覧できます。 </p> <pre class="brush:js;toolbar:false;">const userMatcher = user.role === "admin" ? "*" : user.id; const { data: post } = スーパーベースを待ちます .from("投稿") 。選択する("*") .eq("id", id) .eq("userId", userMatcher) 。シングル(); </pre> <p>「*」の一致はここでは効果がありません。可能であれば、このコードをクリーンな状態に保ち、管理ケースのクエリ (ユーザー マッチャーを除く) を複製しないようにしたいと考えています。 </p> <p>可能であれば、最もクリーンな方法は何ですか? </p>
P粉741223880P粉741223880432日前466

全員に返信(2)返信します

  • P粉513316221

    P粉5133162212023-08-16 16:57:09

    マイケル・コクソンの答えは完璧です。

    また、複数の 論理演算子を組み合わせて同様の結果を得ることができます。

    ###### これを試して: ###### リーリー

    管理者ユーザーの場合: user.role === "admin" であるため、条件

    userId.eq.true

    は常に true と評価され、管理者ユーザーはすべての投稿を表示できます。 他のユーザーの場合: Conditions

    userId.eq.{userId: user.id}

    userId が現在のユーザー ID と一致する投稿のみに選択を制限します。 id.eq.${id} 指定された ID の投稿が取得されることを確認します。

    返事
    0
  • P粉670838735

    P粉6708387352023-08-16 09:09:46

    クエリを分割するだけです。すべてを 1 行で行う必要はありません。

    リーリー

    返事
    0
  • キャンセル返事