我创建了一个带有复合类型数组的 db 结构。我想使用 plv8 插入一些值,但我找不到正确的结构来插入这个数组。
我得到的错误是:
ERROR: malformed record literal: "[object Object]"
SQL state: 22P02
DETAIL: Missing left parenthesis.
我知道用 ARRAY[ROW()] 插入是可行的,但是我必须制作一个必须插入的整个数组的长字符串。下面是我制作的结构和我尝试过的插入。用 plv8 插入这个数组/对象的正确方法是什么?
CREATE TYPE mydb.langpath AS
(lang text,
path text[]);
CREATE TABLE mydb.paths
(
info text NOT NULL,
langpath mydb.langpath[],
)
do language plv8 $$
var plan=plv8.prepare('INSERT INTO mydb.paths( info, langpath) VALUES($1, $2)', ['text','mydb.langpath[]'] );
var params=new Array();
params.push('infotext');
var arr=[]; /*this structure is normally created by other functions*/
var pts=[];
pts.push('abc');
pts.push('def');
arr.push({lang:'EN',path:pts}); /*arr can have more values.*/
params.push(arr);
plan.execute(params);
$$