изменить элемент в obj javascript - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь изменить элемент в объекте (результат поиска в коллекции)

Коллекция

name: {},
date: {}

Пример документов в коллекции

[
    {name: "pedro", date: "2018/01/01"},
    {name: "juan", date: "2018/02/02"}
]

Nodejs, мангуст

Collection.find().exec((err, result)=>{
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

получить маршрут

[
    {name: "pedro", date: "2018/01/01"},
    {name: "juan", date: "2018/02/02"}
]

вместо того, что я ожидаю

[
    {name: "pedro", date: "test"},
    {name: "juan", date: "test"}
]

Я ищу создать новый массив obj, но есть другой способ? Любое предложение?

Спасибо

1 Ответ

0 голосов
/ 05 сентября 2018

Во-первых, вам нужно конвертировать документы mongoose в объекты.

Collection.find().exec((err, result)=>{
    result = result.map(doc => doc.toObject()); // add this
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

Кроме того, есть еще одна опция: вы можете использовать метод mongoose lean(), чтобы получать простые объекты вместо документов. Этот подход должен иметь лучшую производительность, чем первый.

Вот краткий пример того, как ваш запрос может выглядеть с lean()

Collection.find().lean().exec((err, result)=>{ // notice lean() before exec
    for(var i = result.length - 1; i >= 0; i--){
        result[i].date = "test";
    }
    res.send(result);
})

Подробнее о lean() методе здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...