我正在使用 Supabase 作为数据库并尝试实现全文搜索。
我的示例设置非常简单,我有两个表:
项目
+----+-----------+-----------------+
| id | name | manufacturer_id |
+----+-----------+-----------------+
| 1 | Notebook | 1 |
+----+-----------+-----------------+
| 2 | Mouse | 2 |
+----+-----------+-----------------+
制造商
+----+-----------+
| id | name |
+----+-----------+
| 1 | Apple |
+----+-----------+
| 2 | Microsoft |
+----+-----------+
我的目标:搜索项目名称或制造商名称并始终收到相应的items
. 搜索“Apple”将返回制造商名称包含此短语的所有项目。搜索“笔记本”将返回具有此名称的所有项目。
(我通过使用完全匹配来简化这个例子,因为这不是我遇到的问题)。
我目前的方法如下:
let keyword = 'Apple';
supabase
.from('items')
.select('*, manufacturers!inner(*)')
.or(`name.eq.${term}`)
.or(`name.eq.${term}`, { foreignTable: 'manufacturers' })
虽然这个查询没有返回任何东西。
如果我删除.or('name.eq.${term}')
它返回正确的项目。如果我删除第二个.or()
并使用项目名称作为我的关键字,则相同。
我根本找不到组合两个 OR 运算符的方法。我也尝试了多个filter()
查询,但没有成功。
编辑:(工作)SQL 语法如下:
SELECT * FROM items
JOIN manufacturers ON items.manufacturer_id = manufacturers.id
WHERE items.name = 'Apple' OR manufacturers.name = 'Apple'
有没有人有办法使用 Supabase JavaScript SDK 做到这一点?先感谢您!