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输出更新了问题。工作!很不错的。塔卡!