Supabase,按外键行的列值过滤

Max*_*Max 9 sql supabase supabase-database

我试图弄清楚如何在 supabase 中实现查询:

模式

CREATE TABLE cars 
(
    id SERIAL PRIMARY KEY,
    brand TEXT
);

CREATE TABLE stores 
(
    id SERIAL PRIMARY KEY,
    car INT REFERENCES car(id),
    name TEXT
);
Run Code Online (Sandbox Code Playgroud)

我想要获取所有出售品牌“x”汽车的商店

在 Supabase 中我可以这样过滤:

let { data: stores } = await supabase
  .from('stores')
  .select("*")
  .eq('name', 'Ford car shop')


// Returns
{
  id: 123456,
  car:"Ford",
  name:"Ford car shop"
}
Run Code Online (Sandbox Code Playgroud)

或者像这样加入:

let { data: stores } = await supabase
  .from('stores')
  .select(`
    *,
    cars (
      brand
    )
  `)
  .eq('name', 'Ford car shop')

// Returns
{
  id: 123456,
  car:"Ford",
  cars: {
     id: 654321,
     brand: "Ford"
  }
  name:"Ford car shop"
}
Run Code Online (Sandbox Code Playgroud)

但是我如何使用supabase sdk 按商店所售汽车的品牌来过滤商店呢?

小智 14

2022:现在可以通过 supabase 客户端实现这一点。您可以使用该!inner()功能。

let { data: stores } = await supabase
  .from('stores')
  .select('*, cars!inner(*)')
  .eq('cars.brand', 'Ford')
Run Code Online (Sandbox Code Playgroud)

文档在这里:使用内部联接进行过滤