Node.js 删除查询时的内部连接,节点JS,Knex JS

Node.js 删除查询时的内部连接,节点JS,Knex JS,node.js,postgresql,knex.js,Node.js,Postgresql,Knex.js,此查询可用于: var query = knex('project_member') .join('project', 'project_member.pm_project', '=', 'project.prj_id') .join('users', 'project_member.pm_user', '=', 'users.us_id') .where({ prj_number: inputs.params.prj_number })

此查询可用于:

  var query = knex('project_member')
    .join('project', 'project_member.pm_project', '=', 'project.prj_id')
    .join('users', 'project_member.pm_user', '=', 'users.us_id')
    .where({
      prj_number: inputs.params.prj_number
    })
    .select('pm_project', 'us_name', 'us_alias');
query.toString提供:

select "pm_project", "us_name", "us_alias" from "project_member" inner join "project" on "project_member"."pm_project" = "project"."prj_id" inner join "users" on "project_member"."pm_user" = "users"."us_id" where "prj_number" = '4026305'
delete from "project_member" where "prj_number" = '4026305' and "pm_user" = '1'
此查询不起作用:

  var query = knex('project_member')
    .join('project', 'project_member.pm_project', '=', 'project.prj_id')
    .where({
      prj_number: inputs.params.prj_number,
      pm_user: inputs.params.pm_user
    })
    .del();
query.toString提供:

select "pm_project", "us_name", "us_alias" from "project_member" inner join "project" on "project_member"."pm_project" = "project"."prj_id" inner join "users" on "project_member"."pm_user" = "users"."us_id" where "prj_number" = '4026305'
delete from "project_member" where "prj_number" = '4026305' and "pm_user" = '1'

无法在删除查询上使用联接?是否必须进行单独的查询才能加入它们?

似乎删除连接无法正常工作,可能是因为不同数据库的删除连接语法非常不同,但您应该能够将查询重写为简单的IN查询

从项目成员中删除 其中pm_用户= 以及 从prj_编号= …应由未经测试的程序生成

knex“项目成员” .其中'pm_user',inputs.params.pm_user .其中“pm_项目”的功能{ 这个。选择“prj_id” .来自“项目” .其中“prj_编号”,输入.params.prj_编号; } 德尔先生
…在数据库中运行来自Internet上随机用户的具有潜在破坏性的SQL之前,请始终记住备份数据-

您能看到生成的SQL吗?从未使用过knex,但可能是通过设置?使用sql输出更新了问题。工作!很不错的。塔卡!