我想使用 Express & MongoDB 创建搜索 API

I want to Create Search API with Express & MongoDB

我想使用 Express 和 MongoDB 创建搜索 API,我已经创建了 GET、POST、DELETE、UPDATE,但我找不到关于如何创建的任何信息我是否执行与 GET POST 或 etc

相同的搜索

我正在发布我的快递 API 已经有 GET POST DELETE 的代码,现在我只想创建这样的搜索,请帮助我。

const express = require('express')
const router = express.Router()
const cors = require('cors')

//Importing Jobs Model
const JobsModel = require('../../models/jobs')
const { find } = require('../../models/jobs')


//POST Req 
router.post('/', async (req,res) => {
    const newJobPost = new JobsModel(req.body)
    try{
        const jobPost = await newJobPost.save()
        if(!jobPost) throw Error('Error, JobPost Not Saved...!')

        res.status(200).json(jobPost)
    }catch(err){
        res.status(400).json({msg:err})
    }
})

//GET All Req 
router.get('/',cors(), async (req,res) => {
    try{
        const getJobs = await JobsModel.find()
        if(!getJobs) throw Error('Error, No Jobs Found...!')
        res.status(200).json(getJobs)
    }catch(err){
        res.status(400).json({msg:err})
    }
})

//GET Single Req 
router.get('/:id',cors(), async (req,res) => {
    try{
        const getJob = await JobsModel.findById(req.params.id)
        if(!getJob) throw Error('Error, Job Not Found...!')
        res.status(200).json(getJob)
    }catch(err){
        res.status(400).json({msg:err})
    }
})


//DELETE Req 
router.delete('/:id',cors(), async (req,res) => {
    try{
        const delJobs = await JobsModel.findByIdAndDelete(req.params.id)
        if(!delJobs) throw Error('No Jobs Found to Delete...!')
        res.status(200).json({success: true})
    }catch(err){
        res.status(400).json({msg:err})
    }
})


//UPDATE Req 
router.patch('/:id',cors(), async (req,res) => {
    try{
        const updateJob = await JobsModel.findByIdAndUpdate(req.params.id, req.body)
        if(!updateJob) throw Error('Error, No Jobs Found to Update...!')
        res.status(200).json({success: true})
    }catch(err){
        res.status(400).json({msg:err})
    }
})

像下面这样创建一个基于查询的 GET 路由

//GET Search 
router.get('search/', cors(), async (req, res) => {
    try{
        const searchParams = req.query
        console.log(searchParams)
        const jobs = await JobsModel.find(searchParams)
        if(!jobs) throw Error('Error, No Jobs Found...!')
        res.status(200).json(jobs)
    }catch(err){
        res.status(400).json({msg:err})
    }
})

现在用你的参数调用这个 API

http://localhost/search?name=bob&age=25

你会得到这样的参数

console.log(req.query);
{
   "name": "bob",
   "age" : "25"
}

如果你有更多复杂的过滤器,那么创建一个 POST 路由并在 body 中发送你的参数并在 mongoose find

中使用它们