从节点pg中的SELECT *中提取结果

时间:2014-02-21 10:53:11

标签: javascript node.js postgresql-9.2 stored-functions

我有一个Postgresql存储函数,定义如下:

CREATE OR REPLACE FUNCTION SessionGet(
    sid            varchar)
    RETURNS "SESSION" AS $$
    SELECT * FROM "SESSION" WHERE "SESSION_ID" = sid;
$$ LANGUAGE sql;

我使用PG模块从节点调用它:

SELECT SessionGet('SID-1'::varchar);

session表定义为:

CREATE TABLE "SESSION"
(
  "SESSION_ID" character varying NOT NULL DEFAULT ''::character varying,
  "SESSION" json NOT NULL DEFAULT '{}'::json,
  "LAST_UPDATE" bigint DEFAULT 0,
  CONSTRAINT "SESSION_PK" PRIMARY KEY ("SESSION_ID")
)
WITH (
  OIDS=FALSE
);

我正在尝试检索返回的结果如下:

client.query(sql, function(err, result) {
            done(); // Releasing connection to the pool
            if ( err ) {
                callback(err);
            } else if ( result.rows.length > 0 ) {
                var ttmp = result.rows[0];
                var tmp1 = ttmp[0];
                console.log("Res[0]: " + tmp1);
                callback(err,result.rows[0]);
            } else {
                callback(err);
            }
        });

虽然result.rows.length> 0,但result.rows[0][0]未定义。如何从返回的行中检索字段值?

1 个答案:

答案 0 :(得分:0)

我通过发送SQL语句(SELECT * FROM "SESSION" WHERE "SESSION_ID" = '...';)解决了我的问题,而不是依赖于存储的函数。

我还将SESSION列的名称更改为SESSION_JS,因为将列的名称赋予列似乎也是个问题,但不会显示任何错误消息。