同じルートからフィルター処理された製品を取得します。 Node、Mongoose、MongoDB

2020-08-02 javascript node.js mongodb express mongoose

モデルで作成された製品リストを含むデータベースがあります。

ルート内:

router.get('/products', (req, res) => {

})

完全なフィルタリングされていない製品リストがあります。

製品を名前、色、価格、タグでフィルタリングして、フロントエンドに持ち出したいと考えています。 サーバーへのリクエストは次のようになります:

取得する localhost:3000 / products?name = laptop&color = black&price = 400&tags = tech

フィルタリングされた製品データを取得する方法

Answers

あなたはそのリクエストを処理するリクエストURLとルートについて言及しましたWhat would be the requests that I have to make to the router to filter? つまり、ルートハンドラーからフィルター処理された製品データを取得する方法を知りたいということです。

 router.get('/products', (req, res) => {
//I assume that your product model is 'Product'
const filteredProduct=Product.find(req.query);
})

両方のリクエストを処理する上記のサンプルルートハンドラーを参照してください

GET localhost: 3000/products?name=laptop&color=black&price=400&tags=tech     //get filtered product
GET localhost: 3000/products/                    //get all product

ここでは、Productがデータモデルであることを前提としているため、すべての製品レコードを取得するには、パラメーターなしでfind()mongooseメソッドを呼び出す必要があり、フィルターされたデータを取得するには、オブジェクトをfindメソッドに渡します。たとえば、すべての製品フィルターを名前、色で指定します。

Product.find({name:'laptop',color:'black'}) 

req.Queryは、クエリ文字列が解析された後、JSオブジェクトを返します。 req.Queryreq.paramsreq.bodyの詳細を読む

Related