Supabase,按外键行的列值过滤

Supabase, filter by column value of foreign key row

我想知道如何在 supabase 中实现查询:

架构

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

CREATE TABLE stores 
(
    id SERIAL PRIMARY KEY,
    car INT REFERENCES car(id),
    name TEXT
);

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

在 Supabase 中我可以这样过滤:

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


// Returns
{
  id: 123456,
  car:"Ford",
  name:"Ford car shop"
}

或这样加入:

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"
}

但是我如何使用 supabase sdk 按他们携带的汽车品牌过滤商店?

编辑: Supabase 最近添加了此功能。新接受的答案如下。

我做了更多研究,发现 this is currently not possible。但是,它似乎已经实现并将进入下一个 Supabase 版本。

临时解决方案是使用视图然后查询它们。

CREATE VIEW stores_expanded AS
SELECT
  stores.id,
  stores.name,
  cars.brand
FROM
  stores
  LEFT JOIN cars
ON
  stores.car = cars.id;
let { data: stores } = await supabase
  .from('stores')
  .select("*")
  .eq('brand', 'x')

您可以使用内置的 postgrest api supabase 来获取此信息。例如:

/projects?select=*,clients!inner(*)&clients.id=eq.12

这还没有添加到 supabase 客户端。

补丁显示在这里:https://github.com/PostgREST/postgrest/releases/tag/v9.0.0