我有一个使用MongoDB作为数据库的网络应用程序,我正试图在名为passport的单个属性中迭代多个值。
这是我的架构:
var EmployeeDBSchema = new Schema({
/* Passport tab schema */
passportInfo: {
passportDetails: []
},
以下是Robomongo的样子:
我试过检查这是否可以作为数组检索,所以我在下面做了:
console.log(_.map(results, _.property('passportInfo')));
passportArr = _.map(results, _.property('passportInfo'));
console.log("is passport array? " + _.isArray(passportArr));
结果:
现在因为它是正面的,我尝试使用ff像正常数组一样迭代它。代码:
_.forEach(passportArr, function (value, key) {
_.forEach(passportArr[key], function(value2, key2){
console.log(key2 + " >> " + value2);
});
});
然而,我得到的是:
如何获取passportExpiry,passportNumber和countryOfOrigin的值?
我真的很难过。希望有人可以提供帮助。
谢谢。
编辑:不确定这是否有帮助,但我从this Plunker得到了结构的想法。 Passport背后的主要思想是用户可以添加无限数量的护照信息(因此passportInfo
数组)。我正在尝试检索此处的数据,以便将其渲染为CSV文件。
更新
这是根据要求展开的results
(来自console.log
):
full results
[ { _id: dummyiddontmind123,
employeeID: '123asd12',
desiredRoleOther: 'Other role',
desiredRole3: 'Role 3',
desiredRole2: 'Role 2',
desiredRole1: 'The Role',
isOpenToIntlAssignment: 'Y',
employeeName: 'Jane Doe',
yrsInIT: 1,
visaInfo:
[ { visaCountryOfOrigin: [Object],
visaNumber: 'asd',
visaEntry: 'Single',
visaExpiry: '2017-03-16T16:00:00.000Z',
visaStatus: 'expired' } ],
passportInfo:
[ { countryOfOrigin: [Object],
passportNumber: [Object],
passportExpiry: '2017-03-03' },
{ countryOfOrigin: [Object],
passportNumber: [Object],
passportExpiry: '2017-03-08T16:00:00.000Z' },
{ countryOfOrigin: [Object],
passportNumber: [Object],
passportExpiry: '2017-03-10T16:00:00.000Z' } ] } ]
[ [ { passportExpiry: '2017-03-03',
passportNumber: { '0': 'EB1234567' },
countryOfOrigin: { '0': 'Philippines' } },
{ passportExpiry: '2017-03-08T16:00:00.000Z',
passportNumber: { '1': 'AS1234' },
countryOfOrigin: { '1': 'Japan' } },
{ passportExpiry: '2017-03-10T16:00:00.000Z',
passportNumber: { '2': 'AX123' },
countryOfOrigin: { '2': 'Singapore' } } ] ]
答案 0 :(得分:1)
您passportInfo
内的数据有点偏,可能是因为输出后出现了一些复制粘贴错误。
我认为您要将所有存储的护照信息导出为格式为csv
的{{1}}。
您要确保的第一件事是实际数据和您期望的数据在结构上是相同的。如果没有,您仍然可以在之前添加转换步骤(例如,展平数组或将对象从country; number; expiry
转换为{0: 123}
)。
只要这一点得到控制,您就可以将[123]
的对象从结构化对象映射到employee.passportInfo
所需的信息数组。这是使用csv
发生的。
我在该地图中添加了另一个步骤,以确保Array.prototype.map
形式的passportInfo.passportNumber
对象转换为数组{0: 123}
。然后,通过添加[123]
和csv
,此数组用于映射到passportInfo.countryOfOrigin
的单行。
.passportExpiry
如果你有什么不明白的地方,请不要犹豫。