У меня есть следующие маршрутизаторы:
/* GET /users/username */
router.get("/:username", function(req, res, next) {
User.findOne({
username: req.params.username
}).exec(function(err, user) {
if (err) return next(error);
res.json(user);
});
});
/* GET /users/id */
router.get("/:id", function(req, res, next) {
User.findById(req.params.id, function(err, user) {
if (err) return next(err);
res.json(user);
});
});
В указанном выше порядке /* GET /users/id */
вернет ноль, а если я поменяю местами, /* GET /users/username */
приведет к этой ошибке:
Ошибка приведения к ObjectId для значения «Гость» по пути «_id» для модели «Пользователь»
По существу, второе промежуточное ПО игнорируется.Тем не менее, оба необходимы для различного поведения.Я использую AngularJS $resource
для взаимодействия с RESTful-источниками данных на стороне сервера.
- Почему я не могу использовать оба одновременно?Почему игнорируется второе промежуточное ПО?
- В каком порядке должны работать оба этих маршрутизатора?