gpt4 book ai didi

node.js - 如何在 Express 中的路由之间传递数据

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:40 25 4
gpt4 key购买 nike

假设我有这个接收一些数据的 POST 路由。

app.post('/getData', function(req, res){
var retrievedData = req.body.exampleVariable;
// Send data to GET method
});

我有这个呈现页面的GET方法,但需要我在POST方法中检索的数据

app.get('/displayData', function(req, res){
// Retrieve data from POST method and display it.
res.render('/examplePage.ejs', {retrievedData : req.retrievedData});
});

retrievedData 变量从给定的 POST 路由传递到 GET 路由的最佳方法是什么?

作为旁注,res.render() 方法似乎只适用于 app.get() 类型的方法

最佳答案

你可以使用

app.post('/getData', function(req, res){
app.set('data', req.body.exampleVariable);
});
app.get('/displayData', function(req, res) {
res.render('/examplePage.ejs', {retrievedData : app.get('data')});
});

但不保证返回的数据一定是用户设置的数据,只有在用户请求获取路由后才会发送数据。这也会使您的 Express 服务器有状态,这会带来很多可能的缺点。

您可以阅读一些相关内容 here

如果您希望您的应用程序是无状态的,您可以将您的应用程序传递到外部某个地方,例如独立于 express 服务器的远程服务器,如 mysql。

如果它有任何用处,您也可以根据需要在同一个请求中发送和接收数据,因为在您的评论中,这似乎是您想要做的。如果你有类似下面的东西,它应该可以正常工作,只要你确实向“/data”发出“POST”请求,考虑到它对“GET”请求工作正常。

app.post('/data', function(req, res){
res.render('/examplePage.ejs', {
retrievedData: req.body.exampleVariable
});
});

下面是一个示例 express 应用程序来展示它是如何工作的

表单. Jade

form(method="post" action="data")
input(type="text" name="data" value="some data")
input(type="submit" value="submit")

数据.jade

h1=data

服务器.js

require('express')()
.use(require('body-parser').urlencoded({ extended: false }))
.get('/form', (req, res) => res.render('form.jade'))
.post('/data', (req, res) => res.render('data.jade', { data: req.body.data }))
.listen(8083);

如果您启动服务器并转到“localhost:8083/form”,提交表单后,您会看到一个呈现的页面,其中包含您发布的数据。

关于node.js - 如何在 Express 中的路由之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com