0

我将 supbase 与具有 2 个表的数据库一起使用(这与此问题有关)。表是teachersusers。两者都有IDid_teacher/id_user分别。我在一个查询中工作,我需要让所有老师加入users表格,那里有一image列。我只需要获取not nullteachers的位置。user image

    const query = supabase.from(`teachers`).select(
      `
        *,
        id_user(
          image
        )
      `
    )

此查询用于让教师加入用户表。因为我得到了我想要的回应。这是一个简短的例子。

{
    "id": 560,
    "teacher_experience": 9,
    "id_user":{
        "image": "example-image.jpg"
    }
}

问题是当我尝试使用一些过滤器来避免null images时。

query.not('id_user.image', 'eq', null)
query.not('id_user.image', 'in', null)
query.ilike('id_user.image', 'null')

只是我试图避免user.image具有值的教师的过滤器示例。因为,我不想得到整个项目,但我得到一个带有id_user = null

{
    "id": 560,
    "teacher_experience": 9,
    "id_user": null          // In this case image is null but still giving me the user
}

解决这个问题的正确形式是什么?

4

5 回答 5

0

只需创建一个view数据库即可解决此问题。Aview是查询的快捷方式,它可能是 applywhere子句。

在 supabase 上的 sql 编辑器中https://app.supabase.io/project/{your_project_id}/editor/sql

使用连接创建一个新视图;

CREATE VIEW teachers_view AS
SELECT
    t.*,
    iu.image as image
FROM teachers as t
LEFT JOIN id_user as iu WHERE t.id = iu.teacher_id;

在此处阅读有关左连接的更多信息

并在应用程序中使用

supabase.from('teachers_view').select().neq('image', null);
于 2021-09-15T12:01:56.237 回答
0
query.not("your_column_name", "is", "NULL")

为我工作!

奇怪的是,如果你想检查 NULL

.filter("your_column_name", "is", "NULL")

似乎是解决方案。不知道为什么不一致

于 2021-09-21T19:16:05.773 回答
0

这是不可能的atm。 您可以在此处查看问题状态。 一些可能性正在使用viewso 在另一个表中启动查询。

于 2021-09-23T15:12:57.320 回答
0

Supbase 客户端使用postgrest,因此您可以在查询中使用各种运算符。 请参阅此页面作为参考

于 2021-10-14T14:43:28.573 回答
0

这个特性最近随着对 PostgREST 9 的支持的发布而出现。您必须使用!inner关键字,您现在可以过滤顶级表的行。

   const query = supabase.from(`teachers`).select(
      `
        *,
        id_user!inner(image)
      `
    ).not("id_users.image", "is", "NULL")
于 2022-02-08T15:06:13.593 回答