2012-10-23 2 views
-2

Я использую nodejs и mongodb.нажимаем объект на уже существующий объект javascript

Я получаю словарь Реза из следующего запроса MongoDB:

Profile.find(search,['_id', 'username'],function(err, res) 

печати разрешения выглядеть:

[ 
    { 
     "username": "dan", 
     "_id": "508179a3753246cd0100000e" 
    }, 
    { 
     "username": "mike", 
     "_id": "508317353d1b33aa0e000010" 
    } 
] 
} 

Я хотел бы, чтобы подтолкнуть к каждому из Реза [х] другая ключевой пара значения :

[ 
    { 
     "username": "dan", 
     "_id": "508179a3753246cd0100000e", 
     "more info": { 
      "weight": "80", 
      "height": "175" 
     } 
    }, 
    { 
     "username": "mike", 
     "_id": "508317353d1b33aa0e000010" 
    }, 
    "more info": { 
     "weight": "80", 
     "height": "175" 
    } 
] 
} 

Я пробовал:

var x=0 dic = [] while (x<res.length){ dic[x] = {} dic[x]=res[x] dic[x]["more info"] = {"wight" : weight, "height" : hight} x=x+1 } но это игнорируется, и я получаю

[ 
    { 
     "username": "dan", 
     "_id": "508179a3753246cd0100000e" 
    }, 
    { 
     "username": "mike", 
     "_id": "508317353d1b33aa0e000010" 
    } 
] 
} 

ценим вашу помощь.

+0

(http://stackoverflow.com/editing-help) –

+0

Не может означать рост и вес? :) Где х определено? Где он увеличивается? – epascarello

ответ

0

Используйте вместо этого цикл for.

for (var x = 0, len = res.length; x < len; ++x) { ... } 

Вы должны инициализировать переменную x первый (var x = 0), а затем увеличить его после каждого выполнения цикла (++x или x += 1).

Update:

О, хорошо. Почему вы создаете новый массив (dic)? Объект в JavaScript передается по ссылке, поэтому, если вы просто изменяете отдельные результаты (res [0], res [1]), вы получаете то же самое.

dic[x] = {}; dic[x] = res[x] не имеет смысла при создании нового объекта ({}), а затем сразу же переписывает его объектом res[x] указывает на.

Попробуйте это: [. Формат кода]

res.forEach(function (item) { 
    item['more info'] = { weight: weight, height: height }; 
}); 

console.log(res); 
+0

Благодарим вас за ответ. это не проблема, я просто забыл написать ее в вопросе – Liatz

+0

о, см. обновление. –

+0

еще раз спасибо. все еще «больше информации» игнорируется! даже try: item.save() – Liatz

Смежные вопросы