Old/incorrect data fetching when using service role key to bypass RLS

I need to read the whole profiles table to get an unused number, and set it for the new logged in user.
Right now the query works, but it gives back old/incorrect numbers (not the ones I can see in the Supabase table editor UI).
import { createClient } from "@supabase/supabase-js" export async function getNewPassportNumber() { const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY const adminSupabase = createClient(supabaseUrl, serviceRoleKey, { auth: { persistSession: false, }, }) const { data: existingPassports, error: existingPassportsError } = await adminSupabase.from("profiles").select("passport") if (existingPassportsError) { console.error("Error fetching existing passports:", existingPassportsError) return undefined } if (existingPassports) { const existingPassportNumbers = new Set( existingPassports.map((passport) => passport.passport.number) ) console.log("Existing passport numbers: ", existingPassportNumbers) let newPassportNumber = null for (let i = 4000; ; i++) { const number = i.toString() if (!existingPassportNumbers.has(number)) { newPassportNumber = number break } } console.log("New passport number: ", newPassportNumber) return newPassportNumber || "" } else { console.error("Failed to fetch existing passports.") } }

This is a NextJS14 server action and imported in a client component after.
Am I doing something wrong here? Is there another way to do this?
Was this page helpful?