所以我使用pg-promise
插入一个类型POINT
列。但它给了我以下错误:
function point(integer[]) does not exist
我将值作为数组传递。我应该改变什么来使它工作?
一些代码(不确定是否有用):
simplified_query = `$${counter++}:name = POINT($${counter++})`
fields =
[
"geolocation",
[10, 10]
]
根据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,在这种情况下,它可以直接用作格式化参数。