在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()

错误:属性“ID”不存在。

发生同样的错误。

我很好奇表列名称和列设置ColumnSets之间的关系。

2.使用上面的帮助器时,如何在数据库中插入当前时间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' }); 

请参阅列以了解可用于configuration各个列的内容。

CURRENT_TIMESTAMP的应用很难理解…

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

它是一个名为createdate的列,默认值为CURRENT_TIMESTAMP ,格式化修饰符^ (与:raw相同),表示原始文本(不需要转义)。 除此之外, Columntypes更详细地解释它。