如何向客户端发送多个变量与对象?Node.js+Axios实现疑问
问题分析与解决
核心问题
- HTTP响应规则限制:Express中一个请求只能发送一次完整响应,
res.send()调用后响应流会直接关闭,后续的res.send()不会执行,所以客户端只能收到第一次发送的cards数据,isAdmin根本没被发送出去。 - 数据结构不匹配:客户端期望从
response.data中读取cards和isAdmin字段,但服务端没有返回包含这两个字段的统一对象,而是分开发送数据,导致客户端无法正确解析。
修正代码
服务端代码修改
把cards和isAdmin打包成一个对象,一次性发送:
var isAdmin = false; app.get('/main', async (req, res) => { let cards = await CardFest.find(); // 将多份数据打包为统一对象返回 res.send({ cards: cards, isAdmin: isAdmin }); })
客户端代码调整
客户端原有逻辑无需大改,服务端返回正确结构后即可正常获取数据:
async loadFests(){ let response = await axios.get('/main'); this.fests = response.data.cards; this.isAdmin = response.data.isAdmin; }
补充说明
所有需要返回给客户端的多份数据,必须放在一个JSON对象里一次性发送——这是HTTP请求响应的基本规则:一个请求对应一个完整响应。后续如果要新增返回数据,直接在这个对象里添加新的键值对即可。
内容的提问来源于stack exchange,提问作者PABLO _6612
相关产品推荐
相关产品推荐

