Supabase – entspricht einem unendlichen Wert
P粉741223880
2023-08-15 18:53:11
<p>Für den Autorisierungsfluss möchte ich in der Middleware einen beliebigen Wert in der <code>.eq</code>-Anweisung abgleichen. Normale Benutzer können nur von ihnen selbst erstellte Beiträge sehen. Administratoren können alle Beiträge sehen. </p>
<pre class="brush:js;toolbar:false;">const userMatcher = user.role === "admin" ? "*" : user.id;
const { data: post } = supabase erwarten
.from("Beiträge")
.wählen("*")
.eq("id", id)
.eq("userId", userMatcher)
.einzel();
</pre>
<p>Die Übereinstimmung mit „*“ hat hier keine Auswirkung. Wenn möglich, möchte ich diesen Code sauber halten und die Abfrage (abzüglich des Benutzer-Matchers) für den Admin-Fall nicht duplizieren. </p>
<p>Wenn möglich, was ist der sauberste Weg? </p>
Michael Coxon
的回答是完美的。或者,您可以通过多个
逻辑运算符
的组合来实现类似的结果。尝试这样做:
对于管理员用户:user.role === "admin",因此条件userId.eq.true始终评估为true,允许管理员用户查看所有帖子。
对于其他用户:条件userId.eq.{userId: user.id}限制了选择只有userId与当前用户的ID匹配的帖子。
id.eq.${id}确保检索到指定id的帖子。
只需将查询拆分。您不需要在一行中完成所有操作。