Ich versuche, alle meine Controller in einer Datei namens Index aufgerufen haben, so dass ich nicht nur alle Express-Routen in einer Datei erstellen.Express Routing Pass Variable auf die erforderliche Datei
Deshalb meine index.js wie folgt aussieht:
//imports and stuff
router.use('/auth', require('./auth'))
router.use('/users', require('./users'))
router.use('/:world_id/villages', require('./villages'))
//export router
Dann habe ich die auth.js haben und users.js Dateien.
auth.js:
router.route('/register')
.post(function(req, res) {
//register the user
})
users.js:
router.route('/:user_id')
//GET user profile
.get(function(req, res){
// Use the req.params.userId to get the user by Id
})
Und das funktioniert gut für diese 2 beide. Der Zugriff auf /api/auth/register
oder /api/users/:user_id
funktioniert wie erwartet.
Aber wenn für /api/{world_id}/villages
dies nicht geht zu gehen versucht, wie erwartet, da der world_id
Parameter in der Datei erhalten nicht verarbeiten es übergeben, welche villages.js
villages.js ist:
router.route('/')
//GET all villages of the current world (world_id)
.get(function(req, res){
// Use the req.params.world_id to get it... but this is undefined :(
})
Wie kann ich diese Dateistruktur haben, so dass meine Controller nicht unordentlich werden und gleichzeitig diesen Parameter an die Controller-Datei übergeben, damit er sie auch verwenden kann, wenn die Route ('/') ist?
tut Route '/: world_id/villages' nicht you'r Bedürfnisse nicht passt? Aber wenn du eine Variable übergeben willst, solltest du deinen Inhalt mit einer Funktion umhüllen und mit dem Parameter: 'app.use (require ('./ some_dinamyc_routes') ('world_id_1')) aufrufen;' Aber das ist schlimm Übung .. – Maikal
@Maikal die Route passt gut. Aber das Argument ': world_id' wird nicht an meine Datei dörfs.js übergeben, die die Logik der Rückgabe der Dörfer behandelt. –
Sorry, vollständig nicht verstanden, Ihr Problem .. – Maikal