node.jsのsqlite3でselect文を実行します。私はsqliteコードブロックの外で定義されている変数 "データ"の結果を持っているが、それは空のままです。 sqliteコードブロック内では、データ変数に正しい値が設定されています。誰かが私が間違っていることを知っていますか?node.jsの変数のsqlite3による妥当性
ありがとうございます。
/* Client connects via socket.io */
io.on('connection', function(client) {
console.log('Client connected');
/* Client needs data... */
client.on('needData', function(fields) {
var data = [];
var sql_stmt = "SELECT ...";
if(fs.existsSync(db_file)) {
try {
var db = new sqlite3.Database(db_file);
db.all(sql_stmt, function(err, all) {
data = all;
console.log(data); //--> data has valid values
});
db.close();
console.log(data); //--> data is empty
}
catch(e) {
console.log("Error with database. Error: ", e);
}
}
else {
console.log("Database file not found.");
}
client.emit('data', data);
});
});
のwaterfall方法を使用することをお勧めしますという理由だけで
Node.js
のasynchronous
性質のあなたはpromises
によってでそれを扱うことができる起こっ非同期の性質に、私たちにお試しくださいそれを達成するための約束または非同期モジュール – abdulbarik