【问题标题】:Parsing data from mongodb to javascript array object [duplicate]将数据从 mongodb 解析为 javascript 数组对象 [重复]
【发布时间】:2016-08-17 13:01:36
【问题描述】:

您好,我正在学习 mongodb 和 nodejs。我成功检索了订单的所有集合。下面是输出

The orders: { __v: 0,
  nonmeat: 'pineapple',
  meat: 'Bacon',
  sauce: 'AlfredoSauce',
  crust: 'medium',
  _id: 571c1b9aed52d5e5462b99f9 },{ __v: 0,
  nonmeat: 'pineapple',
  meat: 'Bacon',
  sauce: 'AlfredoSauce',
  crust: 'medium',
  _id: 571c1bba07f035e646d24aa8 },{ __v: 0,
  nonmeat: 'parmesan,olives',
  meat: 'Salami',
  sauce: 'MarinaraSauce',
  crust: 'large',
  _id: 571c1e3c28dd30ed469eb6df },{ __v: 0,
  nonmeat: 'parmesan,olives',
  meat: 'Salami',
  sauce: 'MarinaraSauce',
  crust: 'large',
  _id: 571c1f11ba02d9f646f4c5c0 }

但我想将其转换为 javascript 数组,因为该集合返回一个对象数组。我想过滤掉__v_id。我打算用这个结果显示在谷歌饼图上。我只想要关键项目:nonmeatmeatsaucecrust。我打算在谷歌饼图上显示一定百分比的项目。

以下是我从 mongodb 检索数据的代码:

app.get('/orders', function(req, res){

    var allorders = [];
    //get all orders
    PizzaOrder.find({}, function(err, orders){

        if(err) throw err;

         console.log('The orders '+orders.length);

         //this is wrong
         for(var i=0; i<orders.length;i++) {
            allorders.push(JSON.parse(orders[i]));
         }
    });
    console.log('Orders retrieved '+ allorders);

    res.json(allorders);

});

更新!!!!!!!!!

我能够以 json 格式发送它并在浏览器上查看。这是我的代码:

app.get('/orders', function(req, res){
    //get all orders
    PizzaOrder.find({}, function(err, orders){

        if(err) throw err;

         console.log('The orders '+orders.length);
         res.send(orders);
    });
});

但我想将其过滤掉 _id:__v:。我正在使用 ajax 调用来接收响应并打算在谷歌饼图上显示。

【问题讨论】:

  • 你使用的是哪个 Mongodb API
  • 我用过 mongoose 和 mongolab
  • 不是副本中公认的答案,而是显示.toObject() 的答案,因为您需要对可以操作的对象执行此操作。但在投影中排除字段也可以。
  • @BlakesSeven 请你举个例子
  • @user3497437 请提供预期的输出。

标签: node.js mongodb


【解决方案1】:

如果您的问题是如何删除 _id 和 __v,只需这样做:

 for(var i=0; i<orders.length;i++) {
    delete orders[i].__v;
    delete orders[i]._id;
    allorders.push(orders[i]);
 }

【讨论】:

  • 这在我尝试时不起作用
  • 您知道,当您已经提交了一个“新答案”时,会发出一个很大的警告。你真的应该注意这一点。
【解决方案2】:

尝试不使用 JSON.parse

     //try this
     for(var i=0; i<orders.length;i++) {
        allorders.push(orders[i]);
     }

【讨论】:

  • 我更新了我的问题。因为我能够发送 json 并在浏览器上查看,但我想过滤掉 _id__v 并使用这些项目在谷歌饼图中显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2014-12-02
  • 2023-03-22
  • 2020-05-02
  • 2016-09-29
相关资源
最近更新 更多