не учитываются другие СТАРЫЕ комментарии из базы данных phoneNumbers, они не берутся из базы, пример на сайте https://zvonili.com/phone/<PRESIDIO_ANONYMIZED_PHONE_NUMBER> аж 5 комментариев. У меня есть все эти же 5 комментов в базе, но почему-то выводит только один в phone.ejs. видимо, старые комменты не цепляются из базы phoneNumbers, проверь код

app.js:

const express = require("express");
const ejs = require("ejs");
const mongoose = require("mongoose");
const request = require("request");
const cheerio = require("cheerio");
const fs = require("fs");

const app = express();

// Установка EJS в качестве шаблонизатора
app.set('view engine', 'ejs');

// Подключение к MongoDB
mongoose.connect('mongodb://127.0.0.1/phoneNumbers', { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    console.log("Соединение с MongoDB установлено");
  })
  .catch((err) => {
    console.error("Ошибка подключения к MongoDB:", err);
  });

// Определение схемы и модели для хранения номеров телефонов
const PhoneNumberSchema = new mongoose.Schema({
  number: { type: String, index: true },
  url: String,
  comments: [String],
  callType: String
});

const PhoneNumber = mongoose.model('PhoneNumber', PhoneNumberSchema, 'phoneNumbers');

// Функция для получения HTML-кода страницы
function getHtml(url) {
  return new Promise((resolve, reject) => {
    request(url, (error, response, html) => {
      if (error) {
        reject(error);
      } else {
        resolve(html);
      }
    });
  });
}

// Функция для получения номеров телефонов и сохранения их в базе данных
async function getNewPhoneNumbers() {
  console.log("Запущен процесс поиска новых номеров...");

  try {
    const phoneNumbers = await PhoneNumber.find().sort({ _id: -1 }).limit(100).exec();
    const lastPageUrl = phoneNumbers.length > 0 ? phoneNumbers[0].url : null;
    const newPhoneNumbers = [];

    // Получить HTML-код первой страницы с номерами телефонов
    const firstPageUrl = "https://zvonili.com/";
    const firstPageHtml = await getHtml(firstPageUrl);

    // Использовать Cheerio для парсинга HTML-кода и извлечения информации о номере телефона
    const $firstPage = cheerio.load(firstPageHtml);
    const phoneElements = $firstPage(".card-header");

    phoneElements.each((index, element) => {
      const phoneNumber = $firstPage(element).find(".nomerlnk").text().trim();
      const url = $firstPage(element).find(".nomerlnk").attr("href");
      const comments = $firstPage(element).next().find("blockquote").text().trim().replace(/\s*[\[\(]?\s*(Опросы|Реклама|Мошенники)\s*[\]\)]?\s*/gi, '');
      const callTypeElements = $firstPage(element).next().find("span.type");
      const callType = callTypeElements.length > 0 ? callTypeElements.map((index, element) => $firstPage(element).text().trim()).get().join(", ") : "";

      // Добавить новый номер телефона в массив, если его еще нет в базе данных
      const existingPhoneNumber = phoneNumbers.find((phone) => phone.number === phoneNumber);
      if (!existingPhoneNumber) {
        newPhoneNumbers.push({ number: phoneNumber, url: url, comments: comments, callType: callType });
      } else if (!existingPhoneNumber.comments.includes(comments)) {
        existingPhoneNumber.comments.push(comments);
        PhoneNumber.updateOne({ _id: existingPhoneNumber._id }, { comments: existingPhoneNumber.comments })
          .then(() => {
            console.log(`Комментарий "${comments}" добавлен к номеру ${phoneNumber}`);
          })
          .catch((err) => {
            console.error(`Ошибка обновления комментария для номера ${phoneNumber}:`, err);
          });
      }
    });

    console.log(`Найдено ${newPhoneNumbers.length} новых номеров телефонов.`);

    // Сохранить новые номера телефонов в базе данных
    if (newPhoneNumbers.length > 0) {
      for (const phoneNumber of newPhoneNumbers) {
        const existingPhoneNumber = phoneNumbers.find((phone) => phone.number === phoneNumber.number);
        if (!existingPhoneNumber) {
          await PhoneNumber.create(phoneNumber);
        }
      }
    }
  } catch (err) {
    console.error("Ошибка при поиске новых номеровтелефонов:", err);
  }
}

// Отображение списка номеров телефонов на главной странице
app.get('/', async (req, res) => {
  try {
    const phoneNumbers = await PhoneNumber.find().sort({ _id: -1 }).limit(100).exec();
    res.render('index', { phoneNumbers });
  } catch (err) {
    console.error("Ошибка при получении списка номеров телефонов:", err);
    res.status(500).send("Ошибка на сервере");
  }
});

app.get("/phone/:number", async (req, res) => {
const phoneNumber = await PhoneNumber.findOne({ number: req.params.number });

if (phoneNumber) {
const data = {
number: phoneNumber.number,
comments: phoneNumber.comments,
callType: phoneNumber.callType,
};
res.render('phone', data);
} else {
res.status(404).send("Номер телефона не найден");
}
});

// Запуск процесса поиска новых номеров телефонов каждые 10 минут
setInterval(getNewPhoneNumbers, 1 * 10 * 1000);

// Запуск сервера
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Сервер запущен на порту ${PORT}`);
});

phone.ejs:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Номер телефона <%= number %></title>
    <!-- Подключение Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css">
    <!-- Подключение Font Awesome CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <!-- Подключение кастомных стилей CSS -->
    <link rel="stylesheet" href="/styles.css">
  </head>
  <body>
    <div class="container">
      <h1 class="my-5">Номер телефона <%= number %></h1>
    <% if (comments && comments.length > 0) { %>
  <div class="card mb-3">
    <div class="card-header">Комментарии</div>
    <ul class="list-group list-group-flush">
      <% comments.reverse().forEach((comment) => { %>
        <li class="list-group-item"><%= comment %></li>
      <% }); %>
    </ul>
  </div>
<% } else { %>
  <p>Нет комментариев для этого номера телефона.</p>
<% } %>
      <% if (callType) { %>
        <p class="my-2">Тип звонка: <%= callType %></p>
      <% } %>
      <a href="/" class="btn btn-primary">Назад к списку номеров телефонов</a>
    </div>

    <!-- Подключение Bootstrap JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
  </body>
</html>

комменты в базе:

_id
6492d415a91404ad3dbbf783
number
"9990554016"

comments
Array
0
"Только что позвонил "младший лейтенант, дознаватель", что якобы мной с…"
callType
"Мошенники"
_id
6492d419a91404ad3dbdf3c0
number
"9990554016"

comments
Array
0
""
callType
""
_id
6492d419a91404ad3dbdf81f
number
"9990554016"

comments
Array
0
"Телефон 79990554016 - "звонит технический специалист Сбербанка по пово…"
callType
""