我在使用 pg ( https://github.com/brianc/node-postgres ) 的 nodejs 中有以下代码 我为员工创建订阅的代码就是这样。
client.query(
'INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid)
values ($1,$2,$3)', [
datasetArr[0].subscription_guid,
datasetArr[0].employer_guid,
datasetArr[0].employee_guid
],
function(err, result) {
done();
if (err) {
set_response(500, err, res);
logger.error('error running query', err);
return console.error('error running query', err);
}
logger.info('subscription with created');
set_response(201);
});
正如您已经注意到的,datasetArr 是一个数组。我想一次为多个员工创建批量订阅。但是我不想遍历数组。有没有办法用 pg 开箱即用?
最佳答案
我搜索了同样的问题,但还没有找到解决方案。 使用异步库,多次使用查询并进行必要的错误处理非常简单。
可能是这个代码变体有帮助。 (将 10.000 个小 json 对象插入空数据库需要 6 秒)。
克里斯托夫
function insertData(item,callback) {
client.query('INSERT INTO subscriptions (subscription_guid, employer_guid, employee_guid)
values ($1,$2,$3)', [
item.subscription_guid,
item.employer_guid,
item.employee_guid
],
function(err,result) {
// return any err to async.each iterator
callback(err);
})
}
async.each(datasetArr,insertData,function(err) {
// Release the client to the pg module
done();
if (err) {
set_response(500, err, res);
logger.error('error running query', err);
return console.error('error running query', err);
}
logger.info('subscription with created');
set_response(201);
})
关于node.js - 使用 brianc/node-postgres 批量插入到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008668/