В моей базе данных 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>
Моя база данных выглядит так,
База данных