我想使用 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
中使用它们
我想使用 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