【问题标题】:I want to Create Search API with Express & MongoDB我想用 Express & MongoDB 创建搜索 API
【发布时间】:2020-09-10 18:29:56
【问题描述】:

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

我正在发布我的 Express 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})
    }
})

【问题讨论】:

    标签: node.js mongodb express mern rest


    【解决方案1】:

    创建一个基于查询的 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 中使用它们

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2020-11-22
    相关资源
    最近更新 更多