Maison > Questions et réponses > le corps du texte
P粉5133162212023-08-16 16:57:09
La réponse de
Michael Coxon
est parfaite.
Vous pouvez également obtenir des résultats similaires en combinant plusieurs 逻辑运算符
.
Essayez ceci :
const userMatcher = user.role === "admin" ? true : { userId: user.id }; const { data: post } = await supabase .from("posts") .select("*") .or(`userId.eq.${userMatcher}`, "id.eq." + id) .single();
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.
P粉6708387352023-08-16 09:09:46
Divisez simplement la requête. Vous n'êtes pas obligé de tout faire sur une seule ligne.
let query = supabase .from("posts") .select("*") .eq("id", id); if(user.role === "admin"){ query = query.eq("userId", user.id) } const { data: post } = await query.single();