Mat*_*ber 2 postgresql pg-promise
使用pg-promise,使用$1模板文字有什么好处吗?模板文字对我来说更熟悉,但我必须假设他们由于这个包的原因而以不同的方式做。
“正常”方式:
db.any('SELECT * FROM users WHERE active = $1', [true])
Run Code Online (Sandbox Code Playgroud)
我这样做的方式:
const isTrue = true;
db.any(`SELECT * FROM users WHERE active = ${isTrue}`)
Run Code Online (Sandbox Code Playgroud)
更新了我的做法:
const isTrue = true;
const name = 'Matt'
db.any('SELECT * FROM users WHERE active = $1 AND name = $2', [isTrue, name])
Run Code Online (Sandbox Code Playgroud)
或者
const isTrue = true;
const name = 'Matt'
db.any(`SELECT * FROM users WHERE active = $/isTrue/ AND name = $/name/`, {isTrue, name})
Run Code Online (Sandbox Code Playgroud)
与模板文字相比,使用 $1 有什么好处吗?
您不能使用模板文字,文档强调:
重要提示:切勿在 ES6 模板字符串中使用保留
${}语法,因为它们不知道如何格式化 PostgreSQL 的值。在 ES6 模板字符串中,您只能使用 4 个替代项之一 -$()、$<>或$[]。$//
对于您自己的示例,如果您确实需要模板字符串:
const isTrue = true;
await db.any(`SELECT * FROM users WHERE active = $/isTrue/`, {isTrue});
Run Code Online (Sandbox Code Playgroud)
或者您可以只使用标准字符串:
await db.any('SELECT * FROM users WHERE active = ${isTrue}', {isTrue});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1882 次 |
| 最近记录: |