NOTE:此答案自v6.10.0之pg-promise開始支持Nested Named Parameters原生支持。
而問題中提供的代碼示例將按原樣工作。
只爲pg-promise之前v6.10.0
這個圖書館的格式命名參數,它並沒有對其進行評估,因此沒有,你不能做到這一點,至少沒有直接這樣。
但是你可以讓子屬性可供查詢格式化引擎通過函數:
var obj = {
name: 'John',
address: {
postcode: 'abc'
},
addrCode: a => a.address.postcode // alias for accessing a sub-property
};
,然後使用WHERE postcode = ${addrCode}
。
與老/ ES5的語法,通過this
作品也:
var obj = {
name: 'John',
address: {
postcode: 'abc'
},
addrCode: function(/*a*/) {
// a = this (can use both)
return this.address.postcode;
}
};
UPDATE
它有可能使客戶端的評估工作,但只能用$1, $2, ...
參數:
db.query('... postcode = $1 AND name = $2', [obj.name, obj.address.postcode]);
注意:您不能直接使用${obj.address.postcode}
等評估在查詢字符串內部,因爲該值不會被正確轉義。
答案已更新。自[v6.10.0](https://github.com/vitaly-t/pg-promise/releases/tag/v.6.10.0)開始,該庫支持嵌套屬性。 –