将Mongoose Aggregate函数返回到Angular

时间:2017-07-06 11:50:19

标签: javascript angularjs node.js mongodb mongoose

我正在试图找出如何将聚合函数返回给Angular,但我一直在收到错误。我真的很坚持这一点,并希望得到一些关于我做错的帮助。我收到错误告诉我无法读取未定义的属性'aggregate'。
这是角度连接到的路线:

router.get('/enrolledin', function(req, res) {
    var isEnrolled = Enrolled.findDetails(); //Enrolled.studentIsTaking(student);
       isEnrolled.then((user) => {
        res.json(user);
    })
        .catch((err) => {
        res.send("error found");
    });


});

这是 Enrolled.findDetails()

 module.exports.findDetails = function() {
    var x = db.enrolleds.aggregate(
        { $lookup: 
         {
             from:'classstores',
             localField:'classID',
             foreignField: 'classKey',
             as: 'matching'
         }
        }


    );
    return x;
}

1 个答案:

答案 0 :(得分:1)

我相信aggregate(滚动到示例)期望数组不是对象。

除此之外:我不确定为什么人们喜欢用猫鼬thencatch。 IMO似乎没必要,并且使你的代码更长。

我只需将你的代码重写为:

router.get('/enrolledin', (req, res) => {
    Enrolled.findDetails((err, users) => {
        if (err)
            return res.send('error found', err);
        res.json(users);
    });
});

module.exports.findDetails = (callback) => {
    db.enrolleds.aggregate([
        { 
            $lookup: {
                from: 'classstores',
                localField: 'classID',
                foreignField: 'classKey',
                as: 'matching'
            }
        }
    ], callback);
};