栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用pg-promise插入多个记录

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用pg-promise插入多个记录

我是pg-promise的作者。

有两种插入多个记录的方法。第一种也是最典型的方法是通过事务来确保正确插入所有记录,或确保没有插入任何记录。

使用pg-promise可以通过以下方式完成:

db.tx(t => {    const queries = lst.map(l => {        return t.none('INSERT INTO table(id, key, value) VALUES(${id}, ${key}, ${value})', l);    });    return t.batch(queries);})    .then(data => {        // SUCCESS        // data = array of null-s    })    .catch(error => {        // ERROR    });

您可以使用方法tx发起事务,然后创建所有

INSERT
查询承诺,然后将它们全部批量解决。

第二种方法是将所有插入值连接到一个

INSERT
查询中,我将在Performance
Boost
中进行详细说明。。

有关更多示例,请参见任务和事务。

加成

值得指出的是,在大多数情况下,我们不插入记录

id
,而是自动生成记录。有时我们想找回新的ID,而在其他情况下我们不在乎。

上面的示例使用

null
-s
数组进行解析,因为批处理使用单个结果数组进行解析,而方法none均
null
根据其API进行解析。

假设我们要生成新的id,并希望将它们全部收回。为此,我们将代码更改为以下内容:

db.tx(t => {    const queries = lst.map(l => {        return t.one('INSERT INTO table(key, value) VALUES(${key}, ${value}) RETURNING id', l, a => +a.id);    });    return t.batch(queries);})    .then(data => {        // SUCCESS        // data = array of new id-s;    })    .catch(error => {        // ERROR    });

即更改是:

  • 我们不插入
    id
  • 我们将方法none替换为one,以从每个插入中获取一行/对象
  • 我们附加
    RETURNING id
    到查询以获取值
  • 我们添加
    a => +a.id
    了执行自动行转换的功能。

更新

必读文章:数据导入。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485038.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号