Как получить данные из MongoDB в соответствии с критериями фильтрации, установленными пользователем? - PullRequest
0 голосов
/ 29 апреля 2020

В моей базе данных MongoDB есть следующая база данных

"Apple iPad Pro 12 9 (2020)": {
    "Technology": "GSM / CDMA / HSPA / EVDO / LTE",
    "2G bands": "GSM 850 / 900 / 1800 / 1900 ",
    "3G bands": "HSDPA 850 / 900 / 1700(AWS) / 1900 / 2100 ",
    "4G bands": "LTE band 1(2100), 2(1900), 3(1800), 4(1700/2100), 5(850), 7(2600), 8(900), 11(1500), 12(700), 13(700), 14(700), 17(700), 18(800), 19(800), 20(800), 21(1500), 25(1900), 26(850), 29(700), 30(2300), 34(2000), 38(2600), 39(1900), 40(2300), 41(2500), 46(5200), 48, 66(1700/2100), 71(600)",
    "Speed": "HSPA 42.2/5.76 Mbps, LTE-A, EV-DO Rev.A 3.1 Mbps",
    "Announced": "2020, March 18",
    "Status": "Available. Released 2020, March 19",
    "Dimensions": "280.6 x 214.9 x 5.9 mm (11.05 x 8.46 x 0.23 in)",
    "Weight": "641 g (Wi-Fi), 643 g (LTE) (1.41 lb)",
    "Build": "Glass front, aluminum back, aluminum frame",
    "SIM": "Nano-SIM, eSIM",
    "Type": "IPS LCD capacitive touchscreen, 16M colors",
    "Size": "12.9 inches, 515.3 cm2 (~85.4% screen-to-body ratio)",
    "Resolution": "2048 x 2732 pixels, 4:3 ratio (~265 ppi density)",
    "Protection": "Scratch-resistant glass, oleophobic coating",
    "OS": "iPadOS 13.4",
    "Chipset": "Apple A12Z Bionic",
    "CPU": "Octa-core",
    "GPU": "Apple GPU",
    "Card slot": "No",
    "Internal": "128GB 6GB RAM, 256GB 6GB RAM, 512GB 6GB RAM, 1TB 6GB RAM",
    "Triple": "12 MP, f/1.8, (wide), 1/3\", 1.22�m,  dual pixel PDAF10 MP, f/2.4, 11mm (ultrawide)TOF 3D LiDAR scanner (depth)",
    "Features": "Face detection, HDR, panorama",
    "Video": "1080p@30/60fps",
    "Single": "7 MP, f/2.2"
}

Аналогичным образом в моей базе данных есть несколько таких полей, как это для других брендов

Допустим, пользователь устанавливает критерии фильтрации, такие как бренд, разрешение , размер экрана, то как мне вернуть устройства, которые соответствуют критериям из моей базы данных?

Я пробовал следовать функции маршрута

router.post('/submit', async (req, res) => {
  const brand = req.body.brand;
  // const display = req.body.display;
  // const processor = req.body.processor;
  const brandDetails = await fetchDetails.getBrandDetails(brand)
  console.log('details: ', brandDetails)
  res.render('phone/phonelist', {
    brand: brandDetails,
    // display: display,
    // processor: processor,
  });
})

getBranddetails (Это не правильно, но я думаю о реализации чего-то вот так):

const getBrandDetails = async (brand) => {
  const mobileCollection = await mobiles();
  const res = mobileCollection.find({$regex: /^([\w\-]+)/});
  return res;
};

Мой html фрагмент формы:

<form method="POST" action="/submit">
  <div class="form-group">
    <label for="brand">Select brand</label>
    <select class="form-control" id="brand" name="brand">
        <option>Samsung</option>
        <option>Apple</option>
        <option>Google</option>
    </select>
  </div>
</form>

Моя база данных выглядит так,

База данных

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