Comment Passer des Données Entre les Routes en Express
Supposons que j'ai cette POST
route qui reçoit des données.
JS:
app.post('/getData', function(req, res){
var retrievedData = req.body.exampleVariable;
//Send data to GET method
});
Et j'ai cette GET
méthode qui rend une page, mais les besoins les données que j'ai récupéré dans la POST
méthode
JS:
app.get('/displayData', function(req, res){
//Retrieve data from POST method and display it.
res.render('/examplePage.ejs', {retrievedData : req.retrievedData});
});
Quelle est la meilleure façon de passer le retrievedData
variable à partir de la donnée POST
route de la GET
route?
Comme une note côté, le res.render()
méthode semble fonctionner dans la app.get()
méthodes de type
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
mais il n'y a aucune garantie que les données renvoyées seront les données que l'utilisateur, et les données ne seront pas envoyés jusqu'à ce qu'un utilisateur fait une demande pour obtenir l'itinéraire. C'est aussi faire de votre express serveur dynamique, qui est livré avec un lot d'inconvénients possibles.
Vous pouvez lire un peu plus sur elle ici
Si vous voulez que votre application d'être apatride, vous pouvez au lieu de passer votre à quelque part à l'externe, comme un serveur distant comme mysql, qui est indépendant de l'express server.
Dans le cas où il est de toute utilisation, vous pouvez également envoyer et recevoir des données dans la même demande, si vous le préférez, comme dans votre commentaire, ce qui semble être ce que vous essayez de faire.
Si vous avez quelque chose comme ci-dessous, il convient de bien fonctionner, aussi longtemps que vous êtes certainement faire une demande de "POST" à "/data", considérant qu'il travaillait bien pour "OBTENIR" des demandes.
Ci-dessous est un exemple express app pour montrer comment cela fonctionne
forme.jade
de données.jade
server.js
Si vous démarrez le serveur et allez à "localhost:8083/forme",
après avoir soumis le formulaire, vous vous êtes montré un rendu de la page contenant les données que vous avez posté.
Je vous poste ça en supposant que vous sont en cours d'exécution express.js/node.js. Tous les répertoires sont dans le répertoire racine.
Je pense que vous pouvez n'en utiliser qu'une seule voie au lieu de deux routes. En supposant que vous avez la fonction javascript/méthode pour obtenir des données dans un répertoire sous la racine du répertoire d'appel getModules et votre méthode est stocké dans un fichier d'appel getData.js.
routes/index.js
Ensuite, votre fonction doit être exporter les données. Sinon il ne sera pas de cette façon. L'getData.js peut être comme ça.
getModules/getData.js
Ensuite, vous pouvez afficher les résultats dans displayData.ejs qui est similaire à la normale de la page HTML. Mais si vous prévoyez d'utiliser cette diplayData.ejs comme un modèle que vous pouvez inclure exemplepage.ejs à l'intérieur du corps.
Explication Du Code
Avec ce codage, vous pouvez envoyer quelque chose avec req.corps à votre fonction ou pas. Mais la valeur de retour vous sera envoyé avec les données de l'objet. Alors qui est donné à votre prochaine route qui va rendre les données au format HTML. Choses que vous allez à l'affichage dans les résultats de l'objet/tableau. Vous pouvez accéder aux propriétés de l'objet en tant que <%= résultats._source.prop1 %>, et ainsi de suite. Mais vous avez besoin de savoir l'identifiant de la propriété.