You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Loopback 4中如何使用execute()方法执行多条原始SQL语句

LoopBack 4 Juggler 执行多条SQL语句的实现方式

LoopBack 4的多语句执行开关不在execute方法的入参里配置,需要在数据源初始化阶段把参数透传给底层数据库驱动,具体操作如下:

  1. 找到项目对应的数据源配置文件,通常路径为src/datasources/[你的数据源名].datasource.ts
  2. 在数据源的config配置对象中,根据使用的数据库类型添加对应配置项:
  • 若使用MySQL/MariaDB(底层依赖mysql/mysql2驱动),添加multipleStatements: true,该配置默认关闭,用于防范SQL注入风险
  • 若使用PostgreSQL(底层依赖pg驱动),默认支持多语句执行,无需额外添加配置
  • 若使用SQL Server(底层依赖mssql驱动),添加multipleActiveResultSets: true

MySQL场景的配置示例:

const config = {
  name: 'myDb',
  connector: 'mysql',
  host: '127.0.0.1',
  port: 3306,
  user: 'db_user',
  password: 'db_pass',
  database: 'my_db',
  // 开启多语句执行支持
  multipleStatements: true
};
  1. 保存配置后重启应用,原有execute方法无需修改即可直接执行拼接好的多段SQL语句:
await this.myRepository.execute(`SELECT * FROM FIRST_TABLE WHERE TABLE_ID = 1; SELECT * FROM SECOND_TABLE WHERE TABLE_ID = 1;`);

注意:开启多语句执行会放大SQL注入的攻击面,生产环境使用时必须严格校验传入的SQL参数,禁止直接拼接未经过滤的用户输入到SQL语句中,优先使用参数化查询写法。

不要在调用execute时尝试传入多语句开关参数,Juggler不会将调用时传入的临时选项透传到底层驱动的连接配置,这类连接级参数必须在数据源初始化时设置才会生效。

内容的提问来源于stack exchange,提问作者Okira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:15:42