gpt4 book ai didi

node.js - 使用 pg-promise 进行附加数据的多次插入

转载 作者:行者123 更新时间:2023-11-29 13:51:14 26 4
gpt4 key购买 nike

我有一个大型数据集,我想将其插入到 postgres 数据库中,我可以像这样使用 pg-promise 来实现这一点

function batchUpload (req, res, next) {
var data = req.body.data;
var cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email'], { table: 'customer' });
var query = pgp.helpers.insert(data, cs);
db.none(query)
.then(data => {
// success;

})
.catch(error => {
// error;
return next(error);
});
}

数据集是这样的对象数组:

           [
{
firstname : 'Lola',
lastname : 'Solo',
email: 'mail@solo.com',
},
{
firstname : 'hello',
lastname : 'world',
email: 'mail@example.com',
},
{
firstname : 'mami',
lastname : 'water',
email: 'mami@example.com',
}
]

挑战是我有一个列 added_at,它不包含在数据集中并且不能为 null。如何为查询中的每个记录插入添加时间戳。

最佳答案

根据 ColumnConfig语法:

const col = {
name: 'added_at',
def: () => new Date() // default to the current Date/Time
};

const cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email', col], { table: 'customer' });

或者,您可以通过多种其他方式定义它,如 ColumnConfig非常灵活。

例子:

const col = {
name: 'added_at',
mod: ':raw', // use raw-text modifier, to inject the string directly
def: 'now()' // use now() for the column
};

或者您可以使用属性 init 动态设置值:

const col = {
name: 'added_at',
mod: ':raw', // use raw-text modifier, to inject the string directly
init: () => {
return 'now()';
}
};

参见 ColumnConfig详细语法。

附言我是 pg-promise 的作者.

关于node.js - 使用 pg-promise 进行附加数据的多次插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com