我不知道如何以更好的方式提出這個問題,所以我有這條路線。我有 details/user_id 和 detail/id 但是當我把它們都寫成細節時......看起來它并不關心主要路線下面的路線。如何區分 details/id 和 details/user_id?
const router = require('express').Router();
const db = require('../models');
// Get details by user_id
router.get('/details/:user_id', (req, res) => {
try {
db.Customer.findAll({
where: {
user_id: req.params.user_id,
},
}).then((user) => res.send(user));
} catch (err) {
res.status(500).json(err);
}
});
// Get details by id
router.get('/detail/:id', (req, res) => {
try {
db.Customer.findAll({
where: {
id: req.params.id,
},
}).then((user) => res.send(user));
} catch (err) {
res.status(500).json(err);
}
});
module.exports = router;
uj5u.com熱心網友回復:
如果引數不相同/相同型別,您應該使用不同的路由
例如 :
router.get('/details/users/:user_id', (req, res) => {
try {
db.Customer.findAll({
where: {
user_id: req.params.user_id,
},
}).then((user) => res.send(user));
} catch (err) {
res.status(500).json(err);
}
});
uj5u.com熱心網友回復:
我認為您在某些方面想要的東西無法完成。例如,如果您的資料庫中有以下架構,
用戶 ID : uuid
id:uuid
你看到他們有相同的模式嗎?所以路由器會混淆獲取任何值的第一個函式。為什么不使用 Jimmy Soussan 建議的路線,為用戶使用 /details/users/:id 和另一個 /details/rooms/:id 這樣的路線。
但是如果你真的想實作類似的東西,我想你可以通過使用正則運算式來實作。如果您的 id 和 user_id 屬于不同型別,那么您可以使用正則運算式來過濾它們。影像的檔案如下
因此,假設您繼續嘗試使用正則運算式,并且 user_id 是串行型別,而 id 是 uuid 型別。
uuid 正則運算式:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9 ]{4}-[a-fA-F0-9]{12}
router.get('/details/users/:user_id(\[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\)', (req, res) => {
try {
db.Customer.findAll({
where: {
user_id: req.params.user_id,
},
}).then((user) => res.send(user));
} catch (err) {
res.status(500).json(err);
}
});
所以它只有在傳遞給 url 的值是 uuid 時才會起作用。這樣您就可以按其值進行過濾,但請記住,如果型別相等則不是很有幫助,因為這些值將遵循相同的模式。您可以使用在線網站(如https://regex101.com/)根據正則運算式測驗您的值。
對您的問題有用的內容:
https://expressjs.com/en/guide/routing.html
使用正則運算式在文本中搜索 UUID
https://regex101.com/
我希望我對我的回答有所幫助,并祝你的問題好運。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324653.html
標籤:节点.js
下一篇:錯誤:找不到模塊'webpack/lib/rules/DescriptionDataMatcherRulePlugin'需要堆疊:
