在pg-promise中使用帮助器时如何设置列[英] How to set columns when using helpers in pg-promise

本文是小编为大家收集整理的关于在pg-promise中使用帮助器时如何设置列的处理方法,想解了在pg-promise中使用帮助器时如何设置列的问题怎么解决?在pg-promise中使用帮助器时如何设置列问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

node.js 开发.我正在使用 pg-promise.

插入以下数据有问题.

我想在下表中插入多行数据.

create table info (
  id varchar(20) not null,
  name varchar(20) not null,
  createdate timestamp with time zone not null
)

我在下面插入了数据.

let info = [
  { myid: '0001', myname: 'name1' },
  { myid: '0002', myname: 'name2' },
  { myid: '0003', myname: 'name3' },
]

我最初插入了以下内容.

for (let i = 0; i <info.length; i ++) {
  db.none (`INSERT INTO info (id, name, createdate ') VALUES ($1, $2, CURRENT_TIMESTAMP)`, [info[i].id, info[i].name])
}

我想使用 pg-promise 正确修复它.

const dataMulti = info
const cs = new pgp.helpers.ColumnSet(
[
  'id',
  'name',
  'createdate',
], {
  table: 'info',
})
await db.none(pgp.helpers.insert(dataMulti, cs))

这里,

1.当插入数据的key不同于.表的列名?

<块引用>

我知道有 pgp.helpers.ColumnSet()

错误:属性"id"不存在.

发生同样的错误.

我很好奇表列名和表列名之间的关系ColumnSets 用于列设置.

<强>2.使用上面的helpers时,如何在数据库中插入当前时间current_timestamp?

感谢您对这两个问题的回答.

解决方案

如下ColumnSet 解决了你所有的问题:

const cs = new pgp.helpers.ColumnSet([
    {name: 'id', prop: 'myid'},
    {name: 'name', prop: 'myname'},
    {name: 'createdate', mod: '^', def: 'CURRENT_TIMESTAMP'}
], {
    table: 'info'
});

请参阅 Column 了解可用于配置各个列的内容.

<块引用>

CURRENT_TIMESTAMP的应用比较难懂……

{name: 'createdate', mod: '^', def: 'CURRENT_TIMESTAMP'}

它是一个名为 createdate 的列,具有默认值 CURRENT_TIMESTAMP 和格式修饰符 ^(与 :raw 相同),表示原始文本(无需转义).除此之外,Column 类型更详细地解释了它.

本文地址:https://www.itbaoku.cn/post/1764219.html