如何在pg-promise中使用帮助程序时设置列

时间:2017-09-17 04:26:14

标签: javascript node.js postgresql pg 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。插入数据的键不同时不能插入。表的列名?

  

我知道有pgp.helpers.ColumnSet()

     

错误:属性&#39; id&#39;不存在。

     

发生同样的错误。

     

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

2。使用上面的帮助程序时,如何在数据库中插入当前时间current_timestamp?

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

1 个答案:

答案 0 :(得分:0)

以下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类型更详细地解释了它。