如何在pg-promise中使用助手时设置列
问题描述:
由node.js开发。我正在使用pg-promise。如何在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.无法插入。表的列名称?
I know there is pgp.helpers.ColumnSet()
Error: Property 'id' does not exist.
The same error occurs.
I am curious about the relationship between table column names and ColumnSets for column settings.
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'
});
见Column,了解适用于配置单个列。
the application of
CURRENT_TIMESTAMP
is difficult to understand...
{name: 'createdate', mod: '^', def: 'CURRENT_TIMESTAMP'}
它是一个命名createdate
柱,用默认值CURRENT_TIMESTAMP
和格式化改性剂^
(同:raw
),这意味着原始文本(没有逃脱需要)。除此之外,Column类型更详细地解释它。
非常感谢。我现在知道这是一个功能。 **但是,current_timestamp的应用很难理解。**我可以要求多一点解释吗? – hyeokluv
我不知道如何初始化'rawText'。 – hyeokluv
@hyeokluv在我的答案中没有'rawText'这样的东西;)你应该使用最新的,它被简化了;) –