Supabase - 無限値と同等
P粉741223880
2023-08-15 18:53:11
<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>
マイケル・コクソン
の答えは完璧です。また、複数の
###### これを試して: ###### リーリー論理演算子
を組み合わせて同様の結果を得ることができます。管理者ユーザーの場合: user.role === "admin" であるため、条件
userId.eq.trueは常に true と評価され、管理者ユーザーはすべての投稿を表示できます。 他のユーザーの場合: Conditions
userId.eq.{userId: user.id}userId が現在のユーザー ID と一致する投稿のみに選択を制限します。 id.eq.${id} 指定された ID の投稿が取得されることを確認します。
クエリを分割するだけです。すべてを 1 行で行う必要はありません。
リーリー