我有一个使用MongoDB作为数据库的应用程序,我很难从数组变量中提取属性值。我使用_.forEach
检查他们是否有数据并返回正数,但是当我尝试根据属性名称获取值时,我得到了undefined
。
这是我的MongoDB模型:
/* Passport tab schema */
passportInfo: {
passportDetails: []
},
/* Visa tab schema */
visaInfo: {
visaDetails: []
},
调用console.log显示我的passportInfo
不为空:
[ { passportExpiry: '2017-03-02T16:00:00.000Z',
passportNumber: { '0': 'AS1234567' },
countryOfOrigin: { '0': 'Country Name' } } ]
以下是我试图提取价值的方法:
_.forEach(results, function (item) {
console.log(item.passportInfo);
var temp = _.map(item.passportInfo, "passportExpiry");
console.log(temp);
但是,在我运行此功能后,temp
返回了undefined
。
我做错了什么?
任何答案都将不胜感激。
谢谢。
答案 0 :(得分:0)
函数_.map
的原型正在等待集合作为第一个参数,但在您的情况下,字段passportInfo
是一个对象。您需要的是将passportDetails
数组传递给_.map
。这是一种简单的方法:
_.flatMap(results, function(item){
return _.map(item.passportInfo.passPortDetails, function(n) {
return n.passportExpiry;
});
});
[更新]上一个答案中有错误。它被纠正了。由于您使用的是旧版lodash
,而不是flatMap
,请使用flatten
函数,如下所示:
_.flatten(results, (item) => {
return _.map(item.passportInfo.passPortDetails, (n) => {
return n.passportExpiry;
});
})