postgres复合types在node-postgres上
说我有以下postgreSQL复合types:
CREATE TYPE myType AS( id bigint, name text, );
和一个除了那个types的存储过程:
CREATE FUNCTION myFunction(mt myType){ //do some stuff }
我想使用node-postgres模块从Node-js调用这个过程。
var pg = require('pg'); var connectionString = "connection string"; pg.connect(connectionString, function(err, client, done) { client.query('SELECT myFunction($1)', [some value], function(err, result) { // do stuff done(); }); });
我如何在JS中创build这样的types? 有没有办法将节点types传递给Postgres存储过程?
经过一些工作,我find了解决这个问题的办法。
var pg = require('pg'); var connectionString = "connection string"; var myType = [ 12345, 'you' ]; pg.connect(connectionString, function(err, client, done) { client.query('SELECT myFunction($1::myType)', ['(' + myType.join(',') + ')' ], function(err, result) { // do stuff done(); }); });
join将返回这个: 12345,you
。 当添加苞片时,它会创build一个string,看起来像这样'(12345,'you')'
,在Postgres数据库中它将被转换为myType
。