如何获取所有参数都转义的原始sql查询字符串?

use*_*521 5 javascript typeorm

console.log(
  myRepo
    .createQueryBuilder()
    .select('id')
    .andWhere('uuid = :uuid', { uuid: '170eb26c-19e7-418b-aae8-3308d61ef7d5' })
    .getSql()
);
Run Code Online (Sandbox Code Playgroud)

印刷: SELECT id FROM "my_entities" "MyEntity" WHERE uuid = $1

如何获取$1替换为参数值的查询字符串?请注意,我不想执行查询 - 我只需要不带参数的查询字符串。

use*_*521 2

我在此 typeorm github 问题中找到了解决方案:https://github.com/typeorm/typeorm/issues/556#issuecomment-317459125

async function rawQuery<T = any[]>(query: string, parameters: object = {}, manager?: EntityManager): Promise<T> {
  const conn = manager ? manager.connection : getConnection();
  const [ escapedQuery, escapedParams ] = conn.driver.escapeQueryWithParameters(query, parameters, {});
  return conn.query(escapedQuery, escapedParams);
}

// usage
const comments = await rawQuery<Array<{ id: number, comment: string }>>(
  'select id, comment from comments where post_id in (:...postIds)', { postIds: [1, 2, 3] }
);
Run Code Online (Sandbox Code Playgroud)