我有一个小型数据转换应用程序,它将xml转换为json,然后将其存储在mySql数据库中,使用node,express& node-mysql
它做得非常好,直到我做大批量,这与模块或mySql无关,但似乎节点中有一些诡计。
要格式化插入数据,我需要将数据放在基本数组中,所以我做了类似的事情。
var keys = ['first_name', 'last_name', 'mi'], values, que, i, q;
values = []
que = []
i = 0
// data is a json array with corresponding keys
while(i < data.length){
values.length = 0
q = 0
for(key in data[i]){
values.push(data[i][keys[q]]);
q += 1
}
que.push(values)
verifyInsert(i)
i += 1
}
当我使用一个条目执行此操作时,该应用程序工作得非常好,但是当我执行多个时,我会多次获得最后一个条目。
我无处可覆盖que,但由于某种原因,在每次迭代后,que中的所有值都会发生变化。在普通的javascript中,我一直使用这个方法来构造一个带有可重用变量的数组,然后我将实例存储在另一个位置。销毁可重用变量values.length = 0
中的值。
此方法在节点中不起作用吗?因为看起来im存储变量本身而不是变量的实例。
答案 0 :(得分:4)
这似乎是你的问题,它存储变量本身。
要克服这一点,你应该做
values = [];
你的循环中的。这将为每次迭代创建一个新数组