Supabase - bersamaan dengan nilai tak terhingga
P粉741223880
2023-08-15 18:53:11
<p>Untuk aliran kebenaran, dalam perisian tengah, saya mahu memadankan sebarang nilai dalam penyataan <kod>.eq</code> Pengguna biasa hanya boleh melihat siaran yang dibuat oleh mereka sendiri. Pentadbir boleh melihat semua siaran. </p>
<pre class="brush:js;toolbar:false;">const userMatcher = user.role === "admin" ?
const {data: post } = tunggu supabase
.dari("siaran")
.select("*")
.eq("id", id)
.eq("userId", userMatcher)
.single();
</pra>
<p>Padanan "*" tidak mempunyai kesan di sini. Jika boleh, saya ingin memastikan kod ini bersih dan tidak menduplikasi pertanyaan (tolak pemadan pengguna) untuk kes pentadbir. </p>
<p>Jika boleh, apakah cara yang paling bersih? </p>
Jawapan
Michael Coxon
adalah sempurna.Sebagai alternatif, anda boleh mencapai hasil yang serupa dengan gabungan berbilang
逻辑运算符
.Cuba ini:
Untuk pengguna admin: user.role === "admin", jadi syarat userId.eq.true sentiasa menilai kepada benar, membolehkan pengguna admin melihat semua siaran.
Untuk pengguna lain: Condition userId.eq.{userId: user.id} mengehadkan pilihan kepada hanya siaran yang userIdnya sepadan dengan ID pengguna semasa.
id.eq.${id} Memastikan siaran dengan id yang dinyatakan diambil semula.
Hanya bahagikan pertanyaan. Anda tidak perlu melakukan semuanya dalam satu baris.