首页 > 解决方案 > express rest api 和 mongoDB 小写查询

问题描述

我用 MongoDB 创建了简单的 Express.js Rest API。我正在使用这个包:https ://www.npmjs.com/package/api-query-params ,除了一件事,一切都很好。我有一个这样的网址:

localhost/properties/?town=LONDON

这将返回伦敦的所有属性,问题在于这是接下来的事情,我需要将值大写(伦敦),我试图实现这个值可以是小写(伦敦),所以最终 URL 将是这样的:

localhost/properties/?town=london

我的路线:

const express = require('express');
const router = express.Router();
const Property = require('../models/Property');
const aqp = require ('api-query-params');


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


    const { filter, skip, limit, sort, projection, population, casters } = aqp(req.query, {
        casters: {
          lowercase: val => req.query.toLowerCase(),

        },
      });


    Property.find(filter)
      .skip(skip)
      .limit(limit)
      .sort(sort)
      .select(projection)
      .populate(population)
      .exec((err, properties) => {
        if (err) {
          return next(err);
        }

        res.send(properties);
      });
  });

module.exports = router;

和 app.js

const express = require('express');
const app = express();
const bodyParser = require("body-parser");
require('dotenv/config');
const mongoose = require('mongoose');
const propertyRoute = require('./routes/property');
const PORT = process.env.PORT || 3000;


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use('/properties', propertyRoute);

//routes
app.get('/', (req, res) => {
    res.send('value');
});

mongoose.connect('linkdatabse', {
    newUrlParser: true,
})
app.listen(PORT, () => {
    console.log(`Server started on port ${PORT}`);
});

我已经根据文档更新了我的路线:https ://www.npmjs.com/package/api-query-params#add-custom-casting-functions 但是,这仍然行不通

任何人都可以尝试帮助我解决这个问题,我做错了什么?

标签: javascriptnode.jsmongodbexpress

解决方案


推荐阅读