¿Cómo eliminar la integración de unión izquierda?
await knex.select().from("dishes") .leftJoin("companies", function () { if (companyId) { this.on("dishes.companyId", "=", "companies.id") } else { // I want to remove left join if companyId is false return false; } })Tengo un error:
code: 'ER_PARSE_ERROR', sql: 'select * from `dishes` left join `companies`' }No está claro con qué parte está teniendo dificultades. Su error actual se debe al hecho de que está intentando crear una combinación izquierda sin darle una condición para unirse.
Le sugiero que mueva su verificación if (companyId if (companyId) fuera de la llamada leftJoin() para que se creen dos consultas separadas.
async function getDishes(companyId) { if (companyId) { return knex.select().from("dishes"). leftJoin("companies", "dishes.companyId", "companies.id"); } return knex.select().from("dishes"); }Lo que potencialmente podría simplificarse a
async function getDishes(companyId) { const dishes = knex.select().from("dishes"); return companyId ? dishes.leftJoin("companies", "dishes.companyId", "companies.id"); : dishes; }