当循环对象Javascript时未定义

时间:2018-04-03 08:13:41

标签: javascript node.js mongodb mongoose

我想问一些事实上我不知道我的代码有什么问题。所以,我是来自数据库的文档。这是我的文档:

{  
  "docs":[  
    {  
      "orderDate":{  
        "value":"2018-03-20",
        "type":"date"
      },
      "name":{  
        "value":"Abid Rakhmansyah",
        "type":"text"
      },
      "phone":{  
        "value":"082117414233",
        "type":"number"
      },
      "email":{  
        "value":"bidnth@gmail.com",
        "type":"email"
      },
      "paid":{  
        "value":true,
        "type":"boolean"
      }
    },
    {  
      "orderDate":{  
        "type":"date",
        "value":"2018-03-13T05:14:00.806Z"
      },
      "name":{  
        "value":"Iqbal Maulana",
        "type":"text"
      },
      "phone":{  
        "value":"082117414233",
        "type":"number"
      },
      "email":{  
        "value":"bidnth@gmail.com",
        "type":"email"
      },
      "paid":{  
        "type":"boolean",
        "value":false
      }
    },
    {  
      "orderDate":{  
        "value":"2018-03-20",
        "type":"date"
      },
      "name":{  
        "value":"Abdullah",
        "type":"text"
      },
      "phone":{  
        "value":"092034",
        "type":"number"
      },
      "email":{  
        "value":"nfdsi@gmail.com",
        "type":"email"
      },
      "paid":{  
        "value":true,
        "type":"boolean"
      }
    },
    {  
      "orderDate":{  
        "value":"2018-03-20",
        "type":"date"
      },
      "name":{  
        "value":"asd",
        "type":"text"
      },
      "phone":{  
        "value":"234234",
        "type":"number"
      },
      "email":{  
        "value":"bidnth@gmail.com",
        "type":"email"
      },
      "paid":{  
        "value":true,
        "type":"boolean"
      }
    },
    {  
      "orderDate":{  
        "type":"date",
        "value":"2018-03-20T06:01:54.821Z"
      },
      "name":{  
        "value":"as",
        "type":"text"
      },
      "phone":{  
        "value":"082117414233",
        "type":"number"
      },
      "email":{  
        "value":"bidnth@gmail.com",
        "type":"email"
      },
      "paid":{  
        "type":"boolean",
        "value":false
      }
    }
  ],
  "total":5,
  "limit":8,
  "page":1,
  "pages":1
}

我想在对象中只获得value属性。所以,我尝试这样编码。

orders.docs.forEach( function (arrayItem)
  {
    Object.keys(arrayItem.toJSON()).forEach(function(key) {
        console.log(key, JSON.stringify(arrayItem[key].value));
    });
  });

我认为它会起作用。但是,我不知道为什么......我的代码的结果并没有像我期望的那样显示。这是我的代码的结果:

  

[0] orderDate“2018-03-20”
  [0](节点:20944)UnhandledPromiseRejectionWarning:未处理的承诺   rejection(拒绝id:1):TypeError:无法读取属性'value'   未定义的

对于第一个循环,它可以正常工作,但是当它进入第二个循环时。 value未定义。什么是错的?

1 个答案:

答案 0 :(得分:1)

你确定你不仅仅是在思考它吗?

这是 Demo

我确信它可以进一步清理,但是如果不修改你的代码太多,这可以找到关键和值对就好了:

(function ($) {

  $('#dropdown-menu-action').on('show.bs.dropdown', function () {
       $('body').addClass('overlay-is-navbar-collapse');
  });

  $('#dropdown-menu-action').on('hide.bs.dropdown', function () {
       $('body').removeClass('overlay-is-navbar-collapse');
  });

})(window.jQuery);