英文:
Supabase returns only 1 row (nodejs)
问题
I'm a Supabase newbie.
我是一个 Supabase 新手。
I'm getting the whole arrays fine on the first visit of the root '/'
第一次访问根路径'/'时,我可以正常获取整个数组。
But once I visit the route for 1 specific restaurant '/:id', subsequent visits of '/' will always return only 1 row.
但是,一旦我访问了特定餐厅的路由'/:id',之后再次访问'/'将始终只返回一行。
Seems like it's caching it after the '/:id' query.
似乎在'/:id'查询之后对其进行了缓存。
Please tell me what I'm doing wrong.
请告诉我我做错了什么。
Thank you.
谢谢。
no-more-hair-to-pull
没有更多的头发可以拔
const express = require('express')
const router = express.Router()
const supabase = require('../provider/supabase')
const restaurants = supabase.from('restaurants')
router.get('/', async (req, res) => {
const { data } = await restaurants.select()
res.json(data)
})
router.get('/:id', async (req, res) => {
const { id } = req.params
const { data } = await restaurants.select().eq('id', id)
if (!data) res.sendStatus(404)
const restaurant = data.length > 0 ? data[0] : undefined
if (!restaurant) {
res.sendStatus(404)
}
res.json(restaurant)
})
const express = require('express')
const router = express.Router()
const supabase = require('../provider/supabase')
const restaurants = supabase.from('restaurants')
router.get('/', async (req, res) => {
const { data } = await restaurants.select()
res.json(data)
})
router.get('/:id', async (req, res) => {
const { id } = req.params
const { data } = await restaurants.select().eq('id', id)
if (!data) res.sendStatus(404)
const restaurant = data.length > 0 ? data[0] : undefined
if (!restaurant) {
res.sendStatus(404)
}
res.json(restaurant)
})
英文:
I'm a Supabase newbie.
I'm getting the whole arrays fine on the first visit of the root '/'
But once I visit the route for 1 specific restaurant '/:id', subsequent visits of '/' will always return only 1 row.
Seems like it's caching it after the '/:id' query.
Please tell me what I'm doing wrong.
Thank you.
no-more-hair-to-pull
const express = require('express')
const router = express.Router()
const supabase = require('../provider/supabase')
const restaurants = supabase.from('restaurants')
router.get('/', async (req, res) => {
const { data } = await restaurants.select()
res.json(data)
})
router.get('/:id', async (req, res) => {
const { id } = req.params
const { data } = await restaurants.select().eq('id', id)
if (!data) res.sendStatus(404)
const restaurant = data.length > 0 ? data[0] : undefined
if (!restaurant) {
res.sendStatus(404)
}
res.json(restaurant)
})
答案1
得分: 2
因为 Supabase 客户端库的结构,你目前不能将 supabase.from('restaurants')
保留为变量。这会记住之前使用的旧查询。解决方案是每当要构建新查询时,始终调用 from()
。
英文:
Because how the client Supabase client library is structured, you currently cannot keep supabase.from('restaurants')
as a variable. This will remember the old query that was used against it. The solution here is to always call from()
whenever you want to construct a new query.
const express = require('express')
const router = express.Router()
const supabase = require('../provider/supabase')
router.get('/', async (req, res) => {
const { data } = await supabase.from('restaurants').select()
res.json(data)
})
router.get('/:id', async (req, res) => {
const { id } = req.params
const { data } = await supabase.from('restaurants').select().eq('id', id)
if (!data) res.sendStatus(404)
const restaurant = data.length > 0 ? data[0] : undefined
if (!restaurant) {
res.sendStatus(404)
}
res.json(restaurant)
})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论