Ich habe drei Dateien server.js, views.js
und access.js
Wie die Mehrdeutigkeit von Routen in Express.js zu vermeiden
In server.js
habe ich alle setzen die dependencies
und einige routes
wie
app.post('/services/getallversions', (req, res) => {
...
// code to handle the req and send response
})
In views.js
I-Code haben wie unten,
module.exports = function(app, db, bodyParser, rules, constants, query) {
app.post('/services/user/:user/:type', (req, res) => {
// user can be 'abcd'
// type can be addview, deleteview etc.
...
// do processing for the req and send res
})
}
In access.js
habe ich Code wie,
module.exports = function(app, db, bodyParser, rules, constants, query) {
app.post('/services/user/:user/:type', (req, res) => {
// user can be 'abcd'
// type can be addaccess, removeaccess etc.
...
// do processing for the req and send res
})
}
In server.js
Datei benötigen ich die access.js and views.js
in folgenden Weise,
var access = require('./access')(app, db, bodyParser, rules, constants, query)
var views = require('./views')(app, db, bodyParser, rules, constants, query)
Wenn ich versuche zu POST
/services/user/abcd/addaccess
meinen views.js
Datei Code ausgeführt wird. constants, query, rules
sind andere .js
Datei, die bereits in server.js
mit require('./filename')
verwendet wird.
Ich verstehe, dass die Mehrdeutigkeit aufgrund gleiche URL-Struktur verursacht. Ich benutze Express 4 und Node JS 6. Ich möchte den Code access.js
und views.js
von server.js
trennen und in separate Dateien legen und sie in der oben genannten Weise erfordern. views.js
und access.js
werden von mir erstellt. Sie sind kein Javascript Framework oder so ähnlich.
In view.js
Ich habe auch versucht, den folgenden Code
var router = require('express').Router()
router.post('/services/user/:user/:type', (req,res)=>{})
Aber das gleiche Problem besteht. Gibt es eine Möglichkeit, das Ding zu erreichen?
Es fällt mir schwer zu verstehen, was genau Sie hier fragen. WIE soll der Server genau wissen, ob er 'views.js' oder' access.js' Code ausführen soll? Die URLs sind * genau * gleich. Sie sind sich dieses Problems bewusst, aber es ist unmöglich zu lösen, ohne verschiedene URLs zu verwenden, schlicht und einfach. Wenn Sie 'views.js' nach der anderen Datei einfügen, überschreibt der' app.post() 'Aufruf einfach den in' access.js'. –