Перемещение узла динамически - PullRequest
0 голосов
/ 28 марта 2012

У меня есть небольшое приложение для преобразования данных, которое преобразует 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.

Этот метод не работает в узле?потому что кажется, что я храню переменную, а не экземпляр переменной.

1 Ответ

4 голосов
/ 28 марта 2012

Похоже, что это ваша проблема, что она хранит саму переменную.

Чтобы преодолеть это, вы должны сделать

values ​​= [];

в вашем цикле.Это создаст новый массив для каждой итерации

...