【发布时间】:2017-08-13 05:30:36
【问题描述】:
我收到了这个 JSON:
{
"TOTAL_RECORDS": 1029,
"REGISTROS": [
{
"CODIGO": "1",
"ATENDIMENTO": "1",
"PAGAMENTO": "1",
"VENCIMENTO": "2016-12-17 00:00:00",
"PROCESSAMENTO": "2016-12-10 00:00:00",
"VALOR": "1800.00000",
"NOSSO_NUMERO": "xxxxxxx",
"NUMERO_DOCUMENTO": "xxxxx",
"CODIGO_BANCO": "123",
"LINHA_DIGITAVEL": "XXX70110000180000",
"CODIGO_BARRAS": "XXX90940"
},
{
"CODIGO": "2",
"ATENDIMENTO": "2",
"PAGAMENTO": "2",
"VENCIMENTO": "2016-12-17 00:00:00",
"PROCESSAMENTO": "2016-12-10 00:00:00",
"VALOR": "2700.00000",
"NOSSO_NUMERO": "xxxxxxx",
"NUMERO_DOCUMENTO": "xxxxx",
"CODIGO_BANCO": "123",
"LINHA_DIGITAVEL": "XXX70110000180000",
"CODIGO_BARRAS": "XXX90940"
},...
然后我需要捕获这些信息并保存在 DB Oracle 中,所以我这样做:
module.exports = function (object, callback) {
var oracledb = require('oracledb');
for(const prop in object['REGISTROS']){
codigo = object['REGISTROS'][prop]['CODIGO'];
atendimento = object['REGISTROS'][prop]['ATENDIMENTO'];
pagamento = object['REGISTROS'][prop]['PAGAMENTO'];
vencimento = object['REGISTROS'][prop]['VENCIMENTO'];
processamento = object['REGISTROS'][prop]['PROCESSAMENTO'];
valor = parseInt(object['REGISTROS'][prop]['VALOR']);
nossoNumero = object['REGISTROS'][prop]['NOSSO_NUMERO'];
numeroDocumento = object['REGISTROS'][prop]['NUMERO_DOCUMENTO'];
codigoBanco = object['REGISTROS'][prop]['CODIGO_BANCO'];
linhaDigitavel = object['REGISTROS'][prop]['LINHA_DIGITAVEL'];
codigoBarras = object['REGISTROS'][prop]['CODIGO_BARRAS'];
oracledb.getConnection({
user: "x",
password:"xxx",
connectString: "mycon/string"
},
function(err, connection){
if (err){
console.error(err.message);
return;
}
connection.execute(
"INSERT INTO USU_TBOLETO VALUES (:USU_CODIGO, :USU_ATEND, :USU_PAGAMENTO, " +
":USU_VENCIMENTO, :USU_PROCESSA, :USU_VALOR, :USU_NOSSONUM, :NUMERODOC, :USU_CODBANCO, " +
":USU_LINHADIG , :USU_CODBARRAS)",
[codigo, atendimento, pagamento, vencimento, processamento, valor, nossoNumero,
numeroDocumento, codigoBanco, linhaDigitavel, codigoBarras],
{ autoCommit: true},
function(err, result){
if (err){
console.error(err.message);
doRelease(connection);
return;
}
console.log(codigo + ' - ' + atendimento + ' - ' + pagamento + ' - ' + vencimento);
///console.log(result.metaData);
///console.log(result.rows);
doRelease(connection);
});
});
}
function doRelease(connection) {
connection.release(
function(err){
if (err) { console.error(err.message); }
}
);
}
}
问题是它只是在我的数据库中插入了最后一条记录,1029 次,就像总记录一样。 为什么? 我不明白为什么。 INSERT 代码在 FOR 条件中。
正确的是插入 1029 次,从 codigo 1 开始直到 1029。
Att. 迪奥戈
【问题讨论】:
-
您的数据库插入是异步的,可能需要一些时间。虽然您的
for循环几乎立即执行,因此插入将采用上次迭代的值。
标签: javascript node.js node-oracledb