Skip to main content

Querying Data

Select

// All rows
const { data } = await naijabase.from('products').select('*')

// Specific columns
const { data } = await naijabase
.from('products')
.select('id, name, price')

// Filter by equality
const { data } = await naijabase
.from('products')
.select('*')
.eq('category', 'electronics')

// Multiple filters
const { data } = await naijabase
.from('products')
.select('*')
.eq('category', 'electronics')
.gt('price', 10000)
.limit(10)

// Order results
const { data } = await naijabase
.from('orders')
.select('*')
.order('created_at', { ascending: false })

// Single row
const { data } = await naijabase
.from('users')
.select('*')
.eq('email', 'user@example.com')
.single()

Available filter operators

MethodSQL equivalentExample
.eq('col', val)col = val.eq('status', 'active')
.neq('col', val)col != val.neq('status', 'deleted')
.gt('col', val)col > val.gt('price', 1000)
.gte('col', val)col >= val.gte('price', 1000)
.lt('col', val)col < val.lt('stock', 5)
.lte('col', val)col <= val.lte('stock', 5)
.like('col', pat)col LIKE pat.like('name', '%shoe%')
.ilike('col', pat)col ILIKE pat.ilike('name', '%shoe%')
.is('col', null)col IS NULL.is('deleted_at', null)
.in('col', [...])col IN (...).in('status', ['active','pending'])

Insert

// Single row
const { data, error } = await naijabase
.from('products')
.insert({
name: 'Ankara Fabric',
price: 5000,
category: 'fashion',
})

// Multiple rows
const { data, error } = await naijabase
.from('products')
.insert([
{ name: 'Aso-oke', price: 12000 },
{ name: 'Adire', price: 7500 },
])

Update

const { data, error } = await naijabase
.from('products')
.update({ price: 6000 })
.eq('id', 'product-uuid-here')

Delete

const { error } = await naijabase
.from('products')
.delete()
.eq('id', 'product-uuid-here')

Pagination

// Page 1 (rows 0–9)
const { data } = await naijabase
.from('products')
.select('*')
.order('created_at', { ascending: false })
.limit(10)
.offset(0)

// Page 2 (rows 10–19)
const { data } = await naijabase
.from('products')
.select('*')
.order('created_at', { ascending: false })
.limit(10)
.offset(10)