I am writing REST API in NodeJS with MongoDB. Structure of the database is:
[ { "_id": "12345", "name": "Meal name", "category": "dessert", "area": "british", "imageUrl": "https.image.jpg", "instructions": "some instructions...", "ingredients": [ { "name": "salt", "measure": "1g" }, { "name": "chicken", "measure": "1" }, { "name": "butter", "measure": "90g" }, ... ] }, ... ]
I can write a route to get data which meet one condition, i.e.:
//getting all, when category = :category router.get('/meals/category=:category', async (req, res) => { try { const meals = await Meal.find({category: req.params.category}) res.json(meals) } catch (err) { res.status(500).json({ message: err.message }) } })
Here, route
'meals/category=vegetarian'
get all data with category = vegetarian.
However, I want to have route, which will filter all data by parameters: category, area, ingredients. For example:
meals/ingredients=salt,pepper&category=dessert&area=american
should return all data, which contains salt and pepper in array, and category = dessert.
another example:
meals/area=american&category=dessert
should return all data, where area=american and category=dessert
How can I write the router.get() method to achieve that?
https://stackoverflow.com/questions/65911521/how-to-filter-mongodb-in-nodejs-api-with-endpoints-checking-if-values-are-inclu January 27, 2021 at 09:07AM
没有评论:
发表评论