In meiner Anwendung, ich habe drei Routen, dieNode.js Express app.use ('/ Route') in andere Route laufen?
http://localhost:8080/search
http://localhost:8080/user
http://localhost:8080/shop
sind ich schreibe Routen in getrennter Datei, in server.js (die Datei laufen im Terminal):
app.use('/', require('./app/routes/index')(app,io,mongoose));
im Index. js:
app.use('/search', require('./searchRouter')(router));
app.use('/user', require('./user')(router,io,mongoose,app,express));
app.use('/shop', require('./shop')(router,io,mongoose,app,express));
Sie alle haben eine Route wie:
router.route('/')
.get(function(req, res) {
res.send('routerRestuarant');
})
.post(function(req, res) {
res.send('routerRestuarant');
})
.put(function(req,res){
res.json({
msg:"new shop.js router"
})
});
Problem:
Wenn ich eine Anfrage an Route ‚/ shop‘ senden, fand ich die Antwort von ‚/ search‘ kommen und keine Antwort von ‚/ shop‘ kommen, wie man es beheben?
Über passieren die Mungo, App, Express- Variablen
Ein Teil meines Codes ist unten:
Index.js:
var express = require('express');
//var router = express.Router({ mergeParams: true });
var router = express.Router();
var routeInit = function (app,io,mongoose) {
//app.use('sessions', require('./sessions')(router));
app.use('/test', require('./searchRouter')(router));
app.use('/user', require('./user')(router,io,mongoose,app,express));
app.use('/shop', require('./shop')(router,io,mongoose,app,express));
return router;
};
module.exports = routeInit;
Shop.js:
var routeShop = function (router,io,mongoose,app,express) {
var Shop = require('../models/Shop')(mongoose);
router.route('/createDish')
.post(function(req, res) {
var dish = req.param('dish', null);
var shopName = req.param('shopName', null);
for (var i = 0; i < dish.length; i++) {
Shop.addDish(shopName, dish[i], function(err) {
if (null == err)
res.json({
code: 200
});
})
}
})
return router;
};
module.exports = routeShop;
In Shop.js brauche ich die Variable Mungo, um die Mong init oose Schema, wenn ich nicht die Variable Mungo hier passieren werde, die complier Fehler ist:
/Users/Documents/Dropbox/MScCS/fos/app/routes/shop.js:8
var Shop = require('../models/Shop')(mongoose);
^
ReferenceError: mongoose is not defined
at routeShop (/Users/liyan/Documents/Dropbox/MScCS/fos/food-ordering-by-zwy-liyan/food-ordering/app/routes/shop.js:8:38)
Sie müssen die Variablen 'mongoose, app, express' nicht an andere Module übergeben. Node.js speichert die geladenen Module zwischen, und Sie können immer wieder darauf verweisen, ohne dass Sie sie übergeben müssen. –
Ich habe Code im Zusammenhang mit Mungo, App etc, Wenn ich sie nicht bestehen, werde ich complier Fehler erhalten –
Sie können nicht Compilerfehler haben, es interpretiert. @MukeshSharma hat Recht, Sie müssen nicht Express, App, Mungo passieren - sie sind zwischengespeichert und verfügbar als var mongoose = erfordern ('mongoose'); * Bitte beachten Sie, dass, wenn Sie die Verbindung mit Mungo gemacht haben - es hält die Verbindung in anderen Dateien, wo Sie Mungo benötigen. – num8er