Supabase - équivalent à une valeur infinie
P粉741223880
2023-08-15 18:53:11
<p>Pour le flux d'autorisation, dans le middleware, je souhaite faire correspondre n'importe quelle valeur dans l'instruction <code>.eq</code> Les utilisateurs ordinaires ne peuvent voir que les publications créées par eux-mêmes. Les administrateurs peuvent voir toutes les publications. </p>
<pre class="brush:js;toolbar:false;">const userMatcher = user.role === "admin" "*" : user.id;
const { data: post } = wait supabase
.from("messages")
.sélectionner("*")
.eq("identifiant", identifiant)
.eq("IDutilisateur", userMatcher)
.célibataire();
≪/pré>
<p>La correspondance de "*" n'a aucun effet ici. Si possible, j'aimerais garder ce code propre et ne pas dupliquer la requête (moins le correspondant d'utilisateur) pour le cas d'administration. </p>
<p>Si possible, quelle est la méthode la plus propre ? </p>
La réponse de
Michael Coxon
est parfaite.Vous pouvez également obtenir des résultats similaires en combinant plusieurs
逻辑运算符
.Essayez ceci :
Pour les utilisateurs administrateurs : user.role === "admin", donc la condition userId.eq.true est toujours évaluée à true, permettant aux utilisateurs administrateurs de voir tous les messages.
Pour les autres utilisateurs : Condition userId.eq.{userId: user.id} limite la sélection aux seules publications dont l'userId correspond à l'ID de l'utilisateur actuel.
id.eq.${id} Garantit que la publication avec l'identifiant spécifié est récupérée.
Divisez simplement la requête. Vous n'êtes pas obligé de tout faire sur une seule ligne.