在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更详细地解释它。