You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向客户端发送多个变量与对象?Node.js+Axios实现疑问

问题分析与解决

核心问题

  1. HTTP响应规则限制:Express中一个请求只能发送一次完整响应,res.send()调用后响应流会直接关闭,后续的res.send()不会执行,所以客户端只能收到第一次发送的cards数据,isAdmin根本没被发送出去。
  2. 数据结构不匹配:客户端期望从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:32:03