Согласно Форматирование нестандартного типа , если field
равно ['geolocation', [10, 10]]
, причем первое значение является именем столбца, вы можете использовать следующую функцию:
function asPoint(field) {
return {
rawType: true,
toPostgres: () => pgp.as.format('$1:name = POINT($2:csv)', field)
};
}
Затем вы можете использовать asPoint(field)
в качестве параметра форматирования запроса:
const field = ['geolocation', [10, 10]];
db.any('SELECT * FROM table WHERE $1', [asPoint(field)])
//=> SELECT * FROM table WHERE "geolocation" = POINT(10, 10)
В качестве альтернативы ваш field
может быть классом пользовательского типа, который реализует Форматирование пользовательского типа либо явно, либочерез прототип, и в этом случае его можно использовать непосредственно в качестве параметра форматирования.