2
我有一個應用程序在瀏覽器中運行並與REST服務通信。可以REST服務具有將數據寫入到Oracle數據庫讓說必須寫一個實體是這樣的:將數組值插入數據庫Node.js,Oracle,orawrap
var entity = {
"id": 0,
"date": new Date(),
"comment": 'test'
};
而且我有一個聲明,看起來像這樣:
ar statement = 'INSERT INTO MY_TABLE ('
+ ' THE_ID '
+ ' , THE_DATE '
+ ' , THE_COMMENT '
+ ') VALUES ('
+ ' :id, '
+ " :date, "
+ ' :comment'
+ ')';
數組實體被稱爲:
var entities = [];
現在可以說我有實體的陣列的30左右的長度我試圖遞歸:
var i = 0;
// Function that Batch inserts an Array.
var insertArray = function (statement, entities, i, cb) {
if (i >= entities.length) {
console.log("exit insertArray.");
return cb(null, true);
}
insert(statement, entities[i], function (err, val) {
if (err) {
console.log('error insertArray: ', err);
return cb(err, null);
}
insertArray(statement, entities, ++i, cb);
});
};
這是插入一個實體到DB
var insert = function (statement, entity, cb) {
orawrap.execute(
statement,
{
"id": { val: entity.id, dir: oracledb.BIND_INOUT, type: oracledb.NUMBER },
"date": { val: entity.date, dir: oracledb.BIND_INOUT, type: oracledb.DATE },
"comment": { val: entity.comment, dir: oracledb.BIND_INOUT, type: oracledb.STRING }
},
cb);
};
該代碼後約3遞歸調用停止插入功能。 我也在for循環中嘗試過。但由於它更適合在異步環境中使用回調,遞歸的想法對我來說似乎更好。無論如何,迭代方法並沒有批量插入值。
你知道如何解決這個問題嗎?