Estoy usando Supabase como base de datos e intento implementar una búsqueda de texto completo.
Mi configuración de ejemplo es bastante simple, tengo dos tablas:
elementos
+----+-----------+-----------------+ | id | name | manufacturer_id | +----+-----------+-----------------+ | 1 | Notebook | 1 | +----+-----------+-----------------+ | 2 | Mouse | 2 | +----+-----------+-----------------+
fabricantes
+----+-----------+ | id | name | +----+-----------+ | 1 | Apple | +----+-----------+ | 2 | Microsoft | +----+-----------+
Mi objetivo: buscar nombres de artículos o nombres de fabricantes y recibir siempre los items
respectivos. La búsqueda de 'Apple' devolvería todos los artículos cuyo nombre de fabricante contenga esta frase. La búsqueda de 'Notebook' devolvería todos los elementos con este nombre.
( Simplifiqué este ejemplo usando coincidencias exactas porque este no es el problema con el que estoy atascado ).
Mi enfoque actual es el siguiente:
let keyword = 'Apple'; supabase .from('items') .select('*, manufacturers!inner(*)') .or(`name.eq.${term}`) .or(`name.eq.${term}`, { foreignTable: 'manufacturers' })
Aunque esta consulta no devuelve nada.
Si .or('name.eq.${term}')
devuelve el elemento correcto. Lo mismo si elimino el segundo .or()
y uso un nombre de elemento como mi palabra clave.
Simplemente no puedo encontrar una manera de combinar dos operadores OR. También probé múltiples consultas de filter()
pero no tuve éxito.
EDITAR: La sintaxis SQL (de trabajo) sería la siguiente:
SELECT * FROM items JOIN manufacturers ON items.manufacturer_id = manufacturers.id WHERE items.name = 'Apple' OR manufacturers.name = 'Apple'
¿Alguien tiene un enfoque sobre cómo hacer eso con el SDK de JavaScript de Supabase? ¡Gracias de antemano!