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>
Michael Coxon
님의 답변은 완벽합니다.또는 여러 가지를 조합하여 유사한 결과를 얻을 수도 있습니다
逻辑运算符
.다음을 시도해 보세요:
으아악관리자용: user.role === "admin"이므로 userId.eq.true 조건은 항상 true로 평가되어 관리자가 모든 게시물을 볼 수 있습니다.
다른 사용자의 경우: Condition userId.eq.{userId: user.id} userId가 현재 사용자 ID와 일치하는 게시물만 선택하도록 제한합니다.
id.eq.${id} 지정된 ID를 가진 게시물이 검색되는지 확인합니다.
쿼리를 분할하면 됩니다. 한 줄로 모든 작업을 수행할 필요는 없습니다.
으아악