使用pg-promise,与模板文字相比,使用$1
有什么好处吗?模板文字对我来说更熟悉,但是由于这个软件包的原因,我不得不假设它们的用法有所不同。
“常规”方式:
db.any('SELECT * FROM users WHERE active = $1', [true])
我的操作方式:
const isTrue = true;
db.any(`SELECT * FROM users WHERE active = ${isTrue}`)
更新了我的操作方式:
const isTrue = true;
const name = 'Matt'
db.any('SELECT * FROM users WHERE active = $1 AND name = $2', [isTrue, name])
OR
const isTrue = true;
const name = 'Matt'
db.any(`SELECT * FROM users WHERE active = $/isTrue/ AND name = $/name/`, {isTrue, name})
答案 0 :(得分:2)
相对于模板文字,使用$ 1有什么好处?
您不能使用模板文字,documentation emphasizes:
重要提示::切勿在ES6模板字符串中使用保留的
${}
语法,因为它们不知道如何格式化PostgreSQL的值。在ES6模板字符串中,您只能使用4个替代方法之一-$()
,$<>
,$[]
或$//
。
您应该使用Named Parameters,与Index Variables相比,它们提供了很多好处:
this
参考对于您自己的示例,如果您确实需要模板字符串:
const isTrue = true;
db.any(`SELECT * FROM users WHERE active = $/isTrue/`, {isTrue})
或者您也可以使用标准字符串:
db.any('SELECT * FROM users WHERE active = ${isTrue}', {isTrue})