我正在试图找出如何将聚合函数返回给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;
}
答案 0 :(得分:1)
我相信aggregate(滚动到示例)期望数组不是对象。
除此之外:我不确定为什么人们喜欢用猫鼬then
和catch
。 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);
};