因此,我正在使用pg-promise
插入类型POINT
列中。但这给了我以下错误:
function point(integer[]) does not exist
我将值作为数组传递。我应该进行哪些更改才能使其正常工作?
一些代码(不确定是否有用)
simplified_query = `$${counter++}:name = POINT($${counter++})`
fields =
[
"geolocation",
[10, 10]
]
答案 0 :(得分:1)
根据Custom Type Formatting,如果您的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
可以是一个自定义类型的类,可以显式地或通过原型实现Custom Type Formatting,在这种情况下,它可以直接用作格式参数。