提问人:Emiliano 提问时间:11/16/2023 更新时间:11/18/2023 访问量:20
Supabase使用GTE过滤大量数据
supabase filter large numbers with gte
问:
你好吗?我使用 nextjs pages router 和 supabase 创建一个商店。使用过滤器获取我的产品时,我发现了一个错误。gte 过滤器不适用于超过 4 位数字的数字。(例如:11000)
我的 api 路由是这样的:
async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== "POST") {
// Return an error response for unsupported request methods
res.status(405).json({ error: "Method Not Allowed" });
return;
}
const {
minPrice,
maxPrice,
oferta,
garment,
category,
search,
}: {
minPrice: number | undefined | null;
maxPrice: number | undefined | null;
oferta: string | undefined | null;
garment: string | undefined | null;
category: string | undefined | null;
search: string | undefined | null;
} = req.body;
let query = supabase
.from("products")
.select(
"seller!inner( status ), id, published, published_version, created_at"
)
.eq("suspended", "false")
.eq("published", "true")
.eq("seller.status", "live");
if (oferta === "si") {
query = query.neq("published_version->>offer_price", "");
}
if (oferta === "no") {
query = query.eq("published_version->>offer_price", "");
}
if (category) {
query = query.eq("published_version->category->>main", category);
}
if (garment) {
query = query.eq("published_version->category->>garment", garment);
}
if (minPrice) {
console.log("minPrice", minPrice);
query = query.gte("published_version->>price", minPrice);
}
// we fetch the products with the filters applied and order them
query = query.order("created_at", { ascending: false }).limit(50);
const { data, error } = await query;
if (error || !data) {
console.log("ERROR", error);
res.status(500).json({ error: error.message });
}
const products = data?.map((product) => {
return {
...product,
data: {
...product.published_version,
},
};
});
res.status(200).json({ data: products });
}
除了 minPrice 和 maxPrice 过滤器外,一切正常。我无法使用大于 9999 的数字进行筛选。
有人可以帮我吗?谢谢!
答:
1赞
Emiliano
11/18/2023
#1
我已经解决了。显然,我用错了.对于 jsonb 第一个孩子,我应该使用->>
->
评论