如何删除函数 Knex.JS 中的左连接?

How to remove left join in function Knex.JS?

如何移除左连接集成?

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;
                }
            })

我有一个错误:

code: 'ER_PARSE_ERROR',
  sql: 'select * from `dishes` left join `companies`'
}

不清楚您在哪一部分遇到困难。您当前的错误是由于您试图创建一个左连接而没有给它一个连接条件。

我建议您将 if (companyId) 检查移到 leftJoin() 调用之外,以便创建两个单独的查询。

async function getDishes(companyId) {
   if (companyId) {
      return knex.select().from("dishes").
          leftJoin("companies", "dishes.companyId", "companies.id");
   }
   return knex.select().from("dishes");
}

可以简化为

async function getDishes(companyId) {
   const dishes = knex.select().from("dishes");
   return companyId 
       ? dishes.leftJoin("companies", "dishes.companyId", "companies.id");
       : dishes;
 }