私の理解が行く限り、これはstream
であり、常にOracleデータベースに値をストリーミングしています。ノードのタイムアウト機能?
もう一度送信する前に約3秒待つようにタイムアウト機能を実行できるのかどうか疑問に思っています。
var net = require('net');
var fs = require('fs');
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
var client = new net.Socket();
client.connect(8080, "192.168.0.7");
console.log("Client most likely connected...");
oracledb.getConnection(
{
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
},
function(err, connection) {
if (err) {
console.error(err.message);
return;
}
client.on('data', function (data) {
var weight_data = Number(data);
console.log('Data: ' + data);
connection.execute("INSERT INTO UNI_SCRAP_SCALE(WEIGHT) VALUES (:weight)", [weight_data], function (err, result) {
if (err) throw err;
console.log("Rows inserted: " + result.rowsAffected);
console.log('Data received from Db:\n');
console.log(result);
connection.commit(
function (err) {
console.log('Done')
});
});
});
});
});
// client.destroy();
だから私は、3つの別々の場所でのsetTimeoutを置きます。 connection.executeがsetTimeoutブロック内にあった場合、コールバックが必要であるとエラーします。だから私は3つのconsole.logsの下に置くことを試み、3秒間そのコードを待ってから、setTimeoutがもう存在しないかのように実行を開始しました(setTimeoutは1回だけです)。明らかに、ノードは貧しい選択でした。たぶんソケットを使用することも悪い選択でした。 –