NodeJS中异步返回的Object无法用点操作符读取属性值如何解决
问题原因
get是async异步函数,所有异步函数默认返回 Promise 实例,而非你代码中 return 的实际业务对象。
你之前直接返回b时,外层调用abc的代码如果用了await接收,相当于自动穿透了两层 Promise 拿到最终的对象结果,所以看起来返回正常。
但你直接访问b.rating时,b还处于未完成状态的 Promise 实例,本身没有rating属性,所以返回undefined。
解决方法
在调用this.get时添加await关键字等待异步结果返回:
async abc(reviewId){ // 添加await等待异步函数执行完成,拿到实际返回的对象 let b = await this.get(reviewId) return b.rating }
另外需要注意,abc本身也是异步函数,外层调用的时候同样需要用await或者.then()的方式拿到最终的rating值:
// 调用示例1:await 接收 const rating = await abc('617a07afeae615cff755fec7') // 调用示例2:.then 回调 abc('617a07afeae615cff755fec7').then(rating => { console.log(rating) })
内容的提问来源于stack exchange,提问作者Swayam Shah
相关产品推荐
相关产品推荐

