Ich stehe vor einem Problem beim Abrufen des Werts von tagid von meiner URL: localhost:8888/p?tagid=1234.
Helfen Sie mir, meinen Controller-Code zu korrigieren. Ich bin nicht in der Lage, die zu bekommen tagid Wert.
Mein Code ist wie folgt:
app.js:
var express = require('express'),
http = require('http'),
path = require('path');
var app = express();
var controller = require('./controller')({
app: app
});
// all environments
app.configure(function() {
app.set('port', process.env.PORT || 8888);
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
app.use(app.router);
app.get("https://stackoverflow.com/", function(req, res) {
res.render('index');
});
});
http.createServer(app).listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
Controller/index.js:
function controller(params) {
var app = params.app;
//var query_string = request.query.query_string;
app.get('/p?tagId=/', function(request, response) {
// userId is a parameter in the url request
response.writeHead(200); // return 200 HTTP OK status
response.end('You are looking for tagId' + request.route.query.tagId);
});
}
module.exports = controller;
routes/index.js:
require('./controllers');
/*
* GET home page.
*/
exports.index = function(req, res) {
res.render('index', {
title: 'Express'
});
};
Ausdrücklich, /p?tagid=1234tagid heißt a Abfragezeichenfolge, kein URL-Parameter. Ein URL-Parameter wäre /p/:tagId.
– Mikemaccana
12. Dezember 14 um 10:40 Uhr
maček
Express 4.x
Um den Wert eines URL-Parameters abzurufen, verwenden Sie erf.param
app.get('/p/:tagId', function(req, res) {
res.send("tagId is set to " + req.params.tagId);
});
// GET /p/5
// tagId is set to 5
Wenn Sie einen Abfrageparameter erhalten möchten ?tagId=5dann benutze erf.Abfrage
app.get('/p', function(req, res) {
res.send("tagId is set to " + req.query.tagId);
});
// GET /p?tagId=5
// tagId is set to 5
Express 3.x
URL-Parameter
app.get('/p/:tagId', function(req, res) {
res.send("tagId is set to " + req.param("tagId"));
});
// GET /p/5
// tagId is set to 5
Abfrageparameter
app.get('/p', function(req, res) {
res.send("tagId is set to " + req.query("tagId"));
});
// GET /p?tagId=5
// tagId is set to 5
Welche Express-Version verwendest du? Ich habe das gerade getestet express-3.4.4 und es funktioniert gut.
– maček
20. November 13 um 7:20 Uhr
Denken Sie daran, zu verwenden /p/5 wenn Sie die obere Lösung verwenden, oder /p?tagId=5 wenn Sie die untere Lösung verwenden.
– maček
20. November 13 um 7:23 Uhr
Die obere Lösung (/p/5) funktioniert perfekt für mich, aber die untere /p?tagId=5 gibt mir den Fehler “tagId is set to undefined”
– Benutzer2834795
20. November 13 um 7:24 Uhr
Vielen Dank, macek. Sie sparen meine Zeit. Es war mein Fehler, ich habe alles nach Ihren Wünschen gemacht, aber in der URL habe ich “tagid” anstelle von “tagId” verwendet.
– Benutzer2834795
20. November 13 um 7:38 Uhr
req.param() ist veraltet: Use either req.params, req.body or req.query, as applicable. Für Named Route „Parameter“ (zB /p/:tagId) benutzen req.params. Für Abfragezeichenfolgen (z /p?tagId=5) benutzen req.query.
– Nateowami
19. Juni 15 um 08:18 Uhr
Sie können so etwas tun req.param('tagId')
Diese Methode ist veraltet. Verwenden Sie stattdessen req.query.
– alextc
15. Oktober 18 um 23:59 Uhr
@alextc req.query und req.params So sind verschiedene Dinge, der Ersatz für req.param('x') ist req.params.x keine Abfrage erforderlich.
– Al-Mothafar
5. Februar 19 um 12:40 Uhr
Wenn Sie den Abfrageparameterwert in der URL abrufen möchten, folgen Sie den folgenden Codeteilen
//url.localhost:8888/p?tagid=1234
req.query.tagid
OR
req.param.tagid
Wenn Sie den URL-Parameter mit der Express-Param-Funktion abrufen möchten
Express-Param-Funktion zum Abrufen eines bestimmten Parameters. Dies wird als Middleware betrachtet und ausgeführt, bevor die Route aufgerufen wird.
Dies kann für Validierungen oder zum Abrufen wichtiger Informationen über Artikel verwendet werden.
Ein Beispiel hierfür wäre:
// parameter middleware that will run before the next routes
app.param('tagid', function(req, res, next, tagid) {
// check if the tagid exists
// do some validations
// add something to the tagid
var modified = tagid+ '123';
// save name to the request
req.tagid= modified;
next();
});
// http://localhost:8080/api/tags/98
app.get('/api/tags/:tagid', function(req, res) {
// the tagid was found and is available in req.tagid
res.send('New tag id ' + req.tagid+ '!');
});
ajay saini
Dies funktioniert, wenn Ihre Route so aussieht: localhost:8888/p?tagid=1234
Ausdrücklich,
/p?tagid=1234
tagid heißt a Abfragezeichenfolge, kein URL-Parameter. Ein URL-Parameter wäre/p/:tagId
.– Mikemaccana
12. Dezember 14 um 10:40 Uhr