【问题标题】:postgres composite type on node-postgresnode-postgres 上的 postgres 复合类型
【发布时间】:2015-06-02 17:21:16
【问题描述】:

假设我有以下 postgreSQL 复合类型:

CREATE TYPE myType AS(
  id  bigint,
  name  text,
);

以及除该类型之外的存储过程:

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 中创建这样的类型?有没有办法将类型从 Node 传递到 Postgres 存储过程?

【问题讨论】:

    标签: node.js postgresql node-postgres


    【解决方案1】:

    经过更多的工作,我找到了解决这个问题的方法。

    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();
       });
    });
    

    加入将返回:12345,you。添加苞片时,它将创建一个类似于 '(12345,'you')' 的字符串,在 Postgres DB 中,它将被转换为 myType

    【讨论】:

    • 好问题。我写了同样的例子来发布它,但我看到了你的问题并得到了一切
    【解决方案2】:

    如果您正在寻找另一种可能的解决方案来解决传递类型组合数据的问题,请考虑使用 json。由于 json 很容易在 Javascript(和许多其他语言)中处理,因此很容易处理。

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多