如何在节点js

时间:2017-05-18 11:31:23

标签: node.js mongodb

我在我的代码中使用map函数我想打开下面数组的Qdata但是在这里它说未定义可能是它在json数组内如果错了请帮我纠正这个!   我的数组结构就像这样

    [ { _id: 201,
        user_id: 141,
        PAN: 1,
        Qdata: 023444 } ]

这是地图的乐趣:

    var data = array.map(function(p){
    return p.Qdata
    })

我的实际代码:

function getTotal(req, res, next) {
    var array = [];
    var array2 = {};
    db.users.find(req.q).toArray(function(err, rest) {
        rest.map(function(ids) {
            array.push(ids._id);
        })
        var total = array.length;
        for (var i = 0; i < array.length; i++) {
            db.users.find(array[i]).toArray(function(err, users) {
                if (err) return next(err);
            });
            db.consumer.aggregate([{
                $unwind: "$votes"
            }, {
                $match: {
                    'consumer_id': mongoskin.helper.toObjectID(array[i])
                }
            }, {
                $group: {
                    _id: "$votes.date",
                    "consumer_id": {
                        $first: "$consumer_id"
                    },
                    "vote": {
                        $sum: {
                            $cond: [{
                                '$gt': ['$votes.score', 0]
                            }, "$votes.score", 0]
                        }
                    }
                }
            }], function(err, sort_res) {
                array2.push(sort_res);
                total -= 1;
                if (total <= 0) {

                var user_obj = {};
                for (var i = rest.length - 1; i >= 0; i--) {
                var userDetails = rest[i];
               user_obj[userDetails._id] = userDetails;
            }

             var aa=array2.map(function(p){
                p.userDetails = obj[p.consumer_id];--------> here am not getting consumer_id
                return p
            })
                res.send(aa)
                }

            })
        }


    })
}

1 个答案:

答案 0 :(得分:0)

只想提出一些可能对你有用的要点。

所以为此我想推荐使用新版本的javascript ES6 它有很多简化的语法更改和新的更新

如果您使用任何不是从0开始的数字,输出将起作用,在这种情况下,您将获得所需的输出

  var x =[ { _id: 201,
        user_id: 141,
        PAN: 1,
        Qdata: 23444 } ]

      var data  = x.map(v => v.Qdata)
    console.log(data) // 23444

但是,如果您使用任何从0开头的数字,就像您在问题中所发布的那样#02;​​ 023444&#39;它被视为基数8(八进制),并将输出为10020,因为从0开始的整数在数学中没有意义。