Tengo rutas con el método get.
app.get("/info/teachers", controller1); app.get("/info/teachers/:teacherid", controller2); app.get("/info/students", controller3); app.get("/info/students/:studentid", controller4); app.get("/info/courses", controller5); app.get("/info/courses/:courseid", controller6); app.get("/info/courses/enrolled/:studentid", controller7); app.get("/info/assists/teachers", controller8); app.get("/info/assists/teachers/:teacherid", controller9); app.get("/info/courses/:teacherid", controller10); app.get("/info/assists/students", controller11); app.get("/info/assists/students/:studentid", controller12);todos funcionan excepto app.get("/info/courses/:teacherid", controller10);
pero si muevo su posición a:
app.get("/info/teachers", controller1); app.get("/info/courses/:teacherid", controller10); app.get("/info/teachers/:teacherid", controller2); app.get("/info/students", controller3); app.get("/info/students/:studentid", controller4); app.get("/info/courses", controller5); app.get("/info/courses/:courseid", controller6); app.get("/info/courses/enrolled/:studentid", controller7); app.get("/info/assists/teachers", controller8); app.get("/info/assists/teachers/:teacherid", controller9); app.get("/info/assists/students", controller11); app.get("/info/assists/students/:studentid", controller12);simplemente funciona; ¿Por qué está pasando esto? todos los controladores funcionan de forma independiente y no necesitan información de los demás.
No hay distinción entre /info/courses/:teacherid y /info/courses/:courseid . El enrutador elegirá el primero que coincida, y ambos coincidirán con las mismas URL.
En su segundo fragmento, nunca se llamará a controller6 .
Deberá cambiar esa ruta a algo como /info/courses/taught/:teacherid (como lo hizo con /enrolled ), o deberá tener una sola ruta /info/courses/:someId con un controlador que puede distinguir si someId es una identificación de maestro o una identificación de curso. (Diferentes prefijos, tal vez?)