我為我的文憑專案制作了一個 RestAPI,現在我的一條路線出現了問題。我正在發送一個帶有搜索引數的請求,但對我來說回應了一個通過 id 查找的路由。也許我只是用 params 寫了不正確的請求,而我的 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 搜索專案的路徑中得到了錯誤回應,請在 此處輸入影像描述
它可以是什么?預先感謝所有的答案。
uj5u.com熱心網友回復:
將 Route 放置在 './routes/brands/' 檔案中的 Route/brands/search上方/brands/:id。
如果你把 Route 放在 Route/brands/:id之前/brands/search,它會考慮 'search' 詞作為引數 'id'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/354106.html
