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



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

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

创建一个基于查询的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中发送你的参数,并在猫鼬find中使用它们

最新更新