node.js - 请求一条路线,但我响应另一条路线
问题描述
我为我的文凭项目制作了一个 RestAPI,现在我的一条路线出现了问题。我正在发送一个带有搜索参数的请求,但我响应了一条通过 id 查找的路线。也许我只是用参数写了不正确的请求,而我的 API 认为这是带 id 的请求?
我的 index.js
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const cookieParser = require('cookie-parser');
const adminRoute = require('./routes/admin');
const courierRoute = require('./routes/couriers');
const customerRoute = require('./routes/customer');
const brandRoute = require('./routes/brands');
const adminTokenRoute = require('./routes/adminTokens');
const courierTokenRoute = require('./routes/courierTokens');
const dotenv = require('dotenv');
const app = express();
dotenv.config()
app.use(express.json({ limit: '30mb', extended: true }));
app.use(express.urlencoded({ limit: '30mb', extended: true }));
app.use(cookieParser());
/*app.use(cors({
credentials: true,
origin: 'http://localhost:3000'
}));*/
app.use(cors());
app.use(adminRoute);
app.use(courierRoute);
app.use(customerRoute);
app.use(brandRoute);
app.use(adminTokenRoute);
app.use(courierTokenRoute);
app.get('/', (req, res) => {
res.send('App is running');
})
const CONNECTION_URL = process.env.MONGODB_URL;
const PORT = process.env.PORT || 5001;
mongoose.connect(CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true,
useCreateIndex: true, useFindAndModify: false })
.then(() => app.listen(PORT, () => console.log(`Server Running on Port:
http://localhost:${PORT}`)))
.catch((error) => console.log(`${error} did not connect`));
mongoose.set('useFindAndModify', false);
我的品牌.js
const express = require('express');
const Brand = require('../models/catalog/brands');
const Admin = require('../models/users/admin');
const Manager = require('../models/users/manager');
const StoreKeeper = require('../models/users/storeKeeper');
const auth = require('../middleware/auth');
const router = express.Router();
router.get('/brands/:id', async (req, res) => {
const { id } = req.params;
try {
const item = await Brand.findById(id);
res.json({ item });
} catch (err) {
res.status(404).json({ error: 'Brand is not found!' });
}
});
router.get('/brands/search', async (req, res) => {
const { searchQuery } = req.query;
try {
const title = new RegExp(searchQuery, 'i');
const items = await Brand.find({ name: title });
res.json({ items });
} catch (err) {
res.status(404).json({ error: 'Wrong request' });
}
});
module.exports = router;
当我发送带有 id 的请求时,一切正常, 在此处输入图像描述
但是,当我发送带有查询参数的请求时,我从通过 id 搜索项目的路线收到错误响应,在 此处输入图像描述
它可以是什么?提前感谢所有答案。
解决方案
将Route放在 './routes/brands/' 文件中的 Route/brands/search
上方。/brands/:id
如果您将 Route 放在 Route/brands/:id
之前/brands/search
,它将考虑 'search' 词作为参数 'id'
推荐阅读
- pyspark - 创建 pyspark 数据框时如何将小数作为值传递?
- html - 如何在引导程序中制作下拉列表?
- java - 如果我在方法中初始化模型,为什么我不能访问它?
- bash - 如何解析 csv 文件以在第 2 列的文件中查找“失败”并找到第 7 列的平均值
- linux - Bash 脚本 - 如何检查是否安装了软件包并根据终端结果执行操作
- java - CORS 策略:请求的资源 Spring Boot Rest API 和 VUE 上不存在“Access-Control-Allow-Origin”标头
- mongodb - mongodb,mongoose 数据库无效但远程工作
- php - 500 无法处理此请求
- swift - 如何使 SCNParticleSystem 中的粒子不透明?
- angular - 如何在剑道图表的顶部而不是底部显示 x 轴值