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

Node.js:从API返回对象访问vouchers字段出现异常格式问题

看起来你遇到的是典型的「对象属性被封装成getter/访问器」的问题,我来帮你拆解一下:

为什么会出现这种差异?

当你用console.log(booking)时,浏览器或Node.js的控制台会自动递归解析对象的所有属性——包括那些用getter定义的属性,它会帮你执行getter并展示最终的返回值(也就是你看到的List [ { value: 100, ... } ])。但直接访问booking.vouchers时,你拿到的是这个getter方法本身(或者它的封装形式,也就是你看到的{ [Function: f] _receiver: ... }),而不是它返回的数组。

解决办法

试试这几个方案:

  • 直接调用getter函数:如果vouchers是一个getter方法,直接执行它就能拿到真实数据:
    const actualVouchers = booking.vouchers();
    console.log(actualVouchers); // 应该能看到正常的List数组
    
  • 提取原始纯数据:很多ORM(比如Sequelize)或者数据封装库会提供方法,把实例转换成纯JSON对象。比如:
    // 以Sequelize为例,获取纯数据对象
    const plainBooking = booking.get({ plain: true });
    // 或者通用的toJSON方法
    const plainBooking = booking.toJSON();
    console.log(plainBooking.vouchers); // 这里的vouchers就是正常的数组/List了
    
  • 查看属性的真实结构:用console.dir替代console.log,可以看到属性的详细类型和结构:
    console.dir(booking.vouchers, { depth: null });
    
    从输出里你能明确它是函数、getter还是其他类型,再针对性处理。

内容的提问来源于stack exchange,提问作者Nikolaj Nyboe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:40:26