私はMySQLのクエリからデータを取得して、要素を配列にプッシュしています。ただし、クエリから移動すると、配列は空になります。私はそれが配列の要素は参照のみであるためだと思います。しかし、どのように配列内に要素を保持するのですか?配列内の要素をプッシュした後、空です
var timeblocked = [];
var timeunblocked = [];
connection.query("SELECT user_relationships.*, block_intervals.* FROM user_relationships INNER JOIN block_intervals ON user_relationships.id = block_intervals.relationfk WHERE (user1 = '"+currentUserID+"' AND user2 = '"+user2_in_blockedRelationship+"' AND timeunblocked IS NOT NULL)", function(error, resultsForBlock){
for (var i = 0; i<resultsForBlock.length; i++) {
timeblocked.push(resultsForBlock[i].timeblocked);
\t timeunblocked.push(resultsForBlock[i].timeunblocked);
}
console.log("1. timeblocked: ", timeblocked, "timeunblocked: ", timeunblocked); // shows all of the elements in the array
});
console.log("2. timeblocked: ", timeblocked, "timeunblocked: ", timeunblocked); //This shows an empty array
なぜ二console.log()
ませは、配列を記録していますか?
あなたが望む結果を得るには、async関数を使用します。コールバックを使用するか、約束してください。 – sabbir
'connection.query'は非同期関数 –
です。私はこれでかなり新しいです。どのようにクエリを違うと思いますか? – suonpera