आपके sysaccess.js
. में मिडलवेयर का क्रम राउटर गलत है।
उदाहरण के लिए:
// "GET /sysaccess/test" will be processed by this middleware
router.get('/:id', (req, res) => {
let id = req.params.id; // id = "test"
Foo.findById(id).exec().then(() => {}); // This line will throw an error because "test" is not a valid "ObjectId"
});
router.get('/test', (req, res) => {
// ...
});
समाधान 1: उन अधिक विशिष्ट बिचौलियों को उन अधिक सामान्य बिचौलियों से पहले आने दें।
उदाहरण के लिए:
router.get('/test', (req, res) => {
// ...
});
router.get('/:id', (req, res) => {
// ...
});
समाधान 2: next
का उपयोग करें अगले मिडलवेयर को अनुरोध पास करने के लिए
उदाहरण के लिए:
router.get('/:id', (req, res, next) => {
let id = req.params.id;
if (id === 'test') { // This is "GET /sysaccess/test"
return next(); // Pass this request to the next matched middleware
}
// ...
});
router.get('/test', (req, res) => {
// ...
});