节点推动变量动态

时间:2012-03-27 21:26:04

标签: arrays node.js variables reusability

我有一个小型数据转换应用程序,它将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存储变量本身而不是变量的实例。

1 个答案:

答案 0 :(得分:4)

这似乎是你的问题,它存储变量本身。

要克服这一点,你应该做

values = [];

你的循环中的

。这将为每次迭代创建一个新数组