Свойство объекта не присваивается в результате мангуста - PullRequest
0 голосов
/ 23 сентября 2018

Я выполнил запрос поиска мангусты и сохранил результат в объекте.

var enabledPlayerQuery = playerCollection.find({playerMobile:{$gt:0}})

Затем на этом объекте я выполнил exec-операцию, подобную этой, чтобы добавить общее значение монеты в каждом объекте, но наконсоль, когда я использую для печати объект, показывает, что значение не присваивается.Объект остается в прежнем состоянии, как и раньше.

enabledPlayerQuery.exec(function(err,queryResult){ 
    async.each(queryResult, function(users ,result){
        user.totalCoins = 1000;
    }, function(err){
        //anything console
    })
}

Но общая стоимость монет не присваивается.

Я попытался использовать метод _.extend для расширения обоих объектов.Также создал другой объект и вставил в него свойство предыдущего, а затем он также не работает.

Ответы [ 2 ]

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

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

var enabledPlayerQuery = playerCollection.find({playerMobile:{$gt:0}}).lean()

или используя toObject() в результирующем объекте.

enabledPlayerQuery.exec(function(err,queryResult){ 
    async.each(queryResult, function(users ,result){
        user.toObject()
        user.totalCoins = 1000;
    }, function(err){
        //anything console
    })
}
0 голосов
/ 23 сентября 2018

Попробуйте использовать .lean() в этом случае.Это даст вам простой объект, где вы можете использовать функции манипулирования объектами.

var enabledPlayerQuery = playerCollection.find({playerMobile:{$gt:0}}).lean()

Исходный вывод сохраняет формат схемы, который вы используете для извлечения значений из коллекции.

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