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,可以看到属性的详细类型和结构:
从输出里你能明确它是函数、getter还是其他类型,再针对性处理。console.dir(booking.vouchers, { depth: null });
内容的提问来源于stack exchange,提问作者Nikolaj Nyboe
相关产品推荐
相关产品推荐

