【问题标题】:How to set columns when using helpers in pg-promise在 pg-promise 中使用助手时如何设置列
【发布时间】:2018-02-25 21:21:17
【问题描述】:

由 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.插入数据的key与.key不同时无法插入。表的列名?

我知道有 pgp.helpers.ColumnSet()

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

发生同样的错误。

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

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

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

【问题讨论】:

    标签: javascript node.js postgresql pg pg-promise


    【解决方案1】:

    以下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 类型有详细解释。

    【讨论】:

    • 非常感谢。我现在知道这是一个功能。 但是,current_timestamp 的应用比较难理解。 可以要求多解释一下吗?
    • 我不知道如何初始化'rawText'。
    • @hyeokluv 在我的回答中没有rawText 这样的东西;)你应该使用最新的,它被简化了;)
    • 作为对你问题的更详细的回答,我能够正确使用它。 pg-promise 是一个非常有用的模块。谢谢。
    猜你喜欢
    • 2017-06-03
    • 2017-10-10
    • 2019-01-04
    • 2021-09-27
    • 2021-10-03
    • 2011-02-09
    • 2020-11-29
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多