【发布时间】:2017-08-17 09:44:59
【问题描述】:
我从 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);
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() 不记录数组?
【问题讨论】:
-
你使用异步函数,使用回调或承诺来获得你想要的结果
-
因为
connection.query是异步函数 -
好的。我对此很陌生。你会如何做不同的查询?
标签: javascript mysql arrays