我有一个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]
未定义。如何从返回的行中检索字段值?
答案 0 :(得分:0)
我通过发送SQL语句(SELECT * FROM "SESSION" WHERE "SESSION_ID" = '...';
)解决了我的问题,而不是依赖于存储的函数。
我还将SESSION
列的名称更改为SESSION_JS
,因为将列的名称赋予列似乎也是个问题,但不会显示任何错误消息。