Пн goose запрос между значениями Express Js - PullRequest
0 голосов
/ 29 января 2020

играю с MongoDb и Mon goose, и я пытаюсь фильтровать по ценовому диапазону, например, отображать свойства от 0 до любого числа (10000),

Моя модель очень проста:

const mongoose = require('mongoose');

const PropertySchema = mongoose.Schema({
    title: String,
    description: String,
    price: Number,
    town: String
})


module.exports = mongoose.model('Property', PropertySchema);

И маршрут. это то, что я собираюсь установить цену от 0 до любого числа, я не хочу жестко кодировать это максимальное значение

const express = require('express');   
const router = express.Router();
const Property = require('../models/Property'); 

router.get('/', async (req, res) => {
    try {
        const properties = await Property.find({ price: { $in: [ 0, 0 ] } });
        res.json(properties);
    } catch (err) {
        res.json({ message: err });
    }
});

URL

properties?price=0&10000

Может кто-нибудь помочь мне с это? Как установить диапазон цен на недвижимость?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вам нужно передать и priceMin, и priceMax из queryParams и использовать их в вашем запросе

const express = require('express');   
const router = express.Router();
const Property = require('../models/Property'); 

router.get('/', async (req, res) => {
    try {
        const properties = await Property.find({ price: { $gte:req.query.priceMin, $lte: req.query.priceMax } });
        res.json(properties);
    } catch (err) {
        res.json({ message: err });
    }
});

URL

properties?priceMin=0&priceMax=10000
0 голосов
/ 29 января 2020

Вы можете сделать это, используя $ gt и $ lt

 properties?min=0&max=10000

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

  let min = req.query.min;
  let max = req.query.max;

    try {
        const properties = await Property.find({ price: { $gt : min , $lt : max } });
        res.json(properties);
    } catch (err) {
        res.json({ message: err });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...