2017-09-17 224 views
1

由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?

謝謝你對這兩個問題的回答。

回答

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,瞭解適用於配置單個列。

the application of CURRENT_TIMESTAMP is difficult to understand...

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

它是一個命名createdate柱,用默認值CURRENT_TIMESTAMP和格式化改性劑^(同:raw),這意味着原始文本(沒有逃脫需要)。除此之外,Column類型更詳細地解釋它。

+0

非常感謝。我現在知道這是一個功能。 **但是,current_timestamp的應用很難理解。**我可以要求多一點解釋嗎? – hyeokluv

+0

我不知道如何初始化'rawText'。 – hyeokluv

+0

@hyeokluv在我的答案中沒有'rawText'這樣的東西;)你應該使用最新的,它被簡化了;) –

相關問題