如何在mongoose

时间:2017-03-22 12:06:54

标签: javascript node.js mongodb mongoose

我有一个使用MongoDB作为数据库的网络应用程序,我正试图在名为passport的单个属性中迭代多个值。

这是我的架构:

var EmployeeDBSchema = new Schema({

    /* Passport tab schema */
    passportInfo: {
        passportDetails: []
    },

以下是Robomongo的样子:

enter image description here

我试过检查这是否可以作为数组检索,所以我在下面做了:

console.log(_.map(results, _.property('passportInfo')));
passportArr = _.map(results, _.property('passportInfo'));
console.log("is passport array? " + _.isArray(passportArr));

结果:

enter image description here

现在因为它是正面的,我尝试使用ff像正常数组一样迭代它。代码:

 _.forEach(passportArr, function (value, key) {
     _.forEach(passportArr[key], function(value2, key2){
         console.log(key2 + " >> " + value2);
     });
 });

然而,我得到的是:

enter image description here

如何获取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' } } ] ]

1 个答案:

答案 0 :(得分:1)

  1. passportInfo内的数据有点偏,可能是因为输出后出现了一些复制粘贴错误。

  2. 我认为您要将所有存储的护照信息导出为格式为csv的{​​{1}}。

  3. 您要确保的第一件事是实际数据和您期望的数据在结构上是相同的。如果没有,您仍然可以在之前添加转换步骤(例如,展平数组或将对象从country; number; expiry转换为{0: 123})。

    只要这一点得到控制,您就可以将[123]的对象从结构化对象映射到employee.passportInfo所需的信息数组。这是使用csv发生的。

    我在该地图中添加了另一个步骤,以确保Array.prototype.map形式的passportInfo.passportNumber对象转换为数组{0: 123}。然后,通过添加[123]csv,此数组用于映射到passportInfo.countryOfOrigin的单行。

    .passportExpiry

    如果你有什么不明白的地方,请不要犹豫。