如何将对象数组中嵌套的data对象推入新数组?遇undefined问题
问题解决方法
你的问题出在Issues.find({})返回的是Mongoose Document实例数组,而非原生JavaScript对象,直接通过issue['data']访问会因为Mongoose的文档包装机制取不到值。
下面是两种可行的解决方式:
方法一:使用.lean()查询原生对象
在查询时添加.lean(),让Mongoose直接返回原生JS对象,这样就能正常访问data属性:
var issues = await Issues.find({}).lean(); // for循环写法 let issuesData = []; for (const issue of issues) { issuesData.push(issue.data); } // 更简洁的map写法 const issuesData = issues.map(issue => issue.data);
方法二:将文档转为普通对象
如果不想修改查询语句,可以用.toObject()把每个Mongoose文档转为原生JS对象后再取值:
var issues = await Issues.find({}); const issuesData = issues.map(issue => issue.toObject().data);
两种方式都能让你得到期望的issuesData数组。
内容的提问来源于stack exchange,提问作者kane ka ne
相关产品推荐
相关产品推荐

