P粉5133162212023-08-16 16:57:09
Michael Coxon
的回答是完美的。
或者,您可以透過多個邏輯運算子
的組合來實現類似的結果。
嘗試這樣做:
#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();
對於管理員使用者:user.role === "admin",因此條件userId.eq.true始終評估為true,允許管理員使用者查看所有貼文。
對於其他使用者:條件userId.eq.{userId: user.id}限制了選擇只有userId與目前使用者的ID相符的貼文。
id.eq.${id}確保檢索到指定id的貼文。
P粉6708387352023-08-16 09:09:46
只需將查詢拆分。您不需要在一行中完成所有操作。
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();