有一个表entityLinks,我想通过一个查询插入多个值。该表是使用此查询定义的:
CREATE TABLE entityLinks(
id INTEGER NOT NULL references posts(id) ON DELETE CASCADE,
tag VARCHAR(255) NOT NULL references tags(tag) ON DELETE CASCADE);
打算用于插入的数据如下所示:
- 标签数组,如['mytag1', 'mytag2, ...] ;
- 与标签相关的实体的ID (例如帖子)。
如果需要,我可以将它们组合成对象数组([{id: 1, tag: 'mytag1'}, {id:1, tag: 'mytag2'}, ... ])。此查询中的所有标签的 ID 相同,但从一个查询到另一个查询不同。
我知道如何插入多个标签
INSERT INTO tags(tag)
SELECT * FROM unnest($1::text[])
($1 - 是一个变量,像this.pool.query(query, [tags])这样作为值传递);...但是当我尝试相同的方法时,unnest
已经取消了所有级别的排列 ([ [1, 'mytag1'], [1, 'mytag2'],... ] => "1, 'mytag1', 1, 'mytag2', ...“。错误是:错误:格式错误的记录文字:“1”(1 - 是 id)
我尝试使用对象数组,但收到此错误: 格式错误的记录文字:“{“id”:179,“tag”:“myTag1”}”
基本上我想插入与相同 id 链接的不同标签(一个查询相同),但也有兴趣了解如何一次插入多个对象(将来可能会有用)。
提前致谢!