Коллекция Mongodb не обновляется должным образом после удаления новых значений - PullRequest
0 голосов
/ 03 апреля 2019

Работая над ботом для создания веб-страниц, пользователь, использующий статистику в чате разногласий, отображает свою статистику, которая была удалена с сайта с помощью cheerio.Каждый раз, когда вызывается команда, сайт очищается, а новая статистика извлекается.Однако проблема в том, что я испытываю затруднения при обновлении новых значений в mongodb.Любая помощь будет принята с благодарностью, чувствую, что мне не хватает чего-то очень простого.Я пытался найти, найти и найти одно и другое, и у всех одна и та же проблема.

Stats.find({}, 'userId', { '_id': 0 }, function (err, docs) {

        for (i = 0; i < docs.length; i++) {
            ids.push(docs[i].userId);
        }

        /////

        ids.forEach(function (entry) {
            var userUrl = 'https://popflash.site/user/' + entry;



            rp(userUrl)
                .then(function (html) {
                    const arr = [];
                    var e = 0;

                    $('.stat-container', html).each(function (key, value) {
                        arr[e++] = $(this).find(".stat").text();

                    });



                    var results = arr.map(Number)
                   console.log(results); //this is printing the newly scraped stats from the site which is working fine.

                    var query = { userId: entry };

                    Stats.find(query, {
                        $set: {
                            HLTV: results[0],
                            ADR: results[1],
                            HS: results[2],
                            W: results[3],
                            L: results[4],
                            T: results[5],
                            totalGames: results[3] + results[4],
                            win_percent: results[6]
                        }
                    })
                        .then(function (result) {

                                    console.log(result) //this is displaying old stats that are stored in the db, seems to not be updating.
                        })

                })
        }); 

    });

1 Ответ

0 голосов
/ 03 апреля 2019

Вы выполняете запрос find, конечно, результатом будет то, что уже есть в базе данных.Если вы хотите update дБ, вам нужно использовать метод update.

Stats.update(query, {
   $set: {
       HLTV: results[0],
       ADR: results[1],
       HS: results[2],
       W: results[3],
       L: results[4],
       T: results[5],
       totalGames: results[3] + results[4],
       win_percent: results[6]
   }
})
...