Saturday 20 May 2017

Type Error: collection.group is not a function in node js

Here is the data in telecalling collection

{
    "product": "a",
    "demo": true,
    "followups": [
        {
            "followup": "2017-05-03T07:54:41.085Z",
            "actiondone": "enquiry"
        },
        {
            "followup": "2017-05-05T07:54:41.085Z",
            "actiondone": "followup"
        }
    ],
    "createdAt": "2017-05-03T07:54:41.085Z",
},
{
    "product": "b",
    "demo": false,
    "followups": [
        {
            "followup": "2017-05-04T07:54:41.085Z",
            "actiondone": "followup"
        },
        {
            "followup": "2017-05-10T07:54:41.085Z",
            "actiondone": "installation"
        }
    ],
    "createdAt": "2017-05-04T07:54:41.085Z",
},
{
    "product": "a",
    "demo": false,
    "followups": [
        {
            "followup": "2017-05-06T07:54:41.085Z",
            "actiondone": "followup"
        }
    ],
    "createdAt": "2017-05-06T07:54:41.085Z",
}

Here I need to group by product and get how many demos, enquiries, followups and installations are done.

Here is the controller for that

summaryReport: function(request,response){
        telecalling.group({
            key: {product: 1},
            cond: {"createdAt": {"$gte": new Date(request.body.fromdate),"$lte": new Date(request.body.todate)}},
            reduce: function(curr, result) {
                if(curr.demo==true){
                    result.demos++;
                }
                var fups = curr.followups;
                fups.forEach(allCounts);
                function allCounts(fup){
                    var action = fup.actiondone.toLowerCase()
                    if(action=='enquiry'){
                        result.enquiries++;
                    }
                    if(action=='followup'){
                        result.followups++;
                    }
                    if(action=='installation'){
                        result.installations++;
                    }
                }
            },
            initial: {enquiries: 0, followups: 0, installations: 0}
        }, function(err,res){
            if(err){
                response.json(err);
            }
            else{
                response.json(res);
            }
        });
}

I'm getting TypeError: telecalling.group is not a function. If I execute this in shell I'm getting the result as

[
    {
            "product" : "Fair Automobiles",
            "enquiries" : 7,
            "followups" : 15,
            "installations" : 0,
            "demos" : NaN
    },
    {
            "product" : "Fair Fertilizers",
            "enquiries" : 1,
            "followups" : 0,
            "installations" : 0
    }
]

Where am I doing wrong. Please help me out.



via G.Mounika

No comments:

Post a Comment