服务器控制台上出现错误: UnhandledPromiseRejectionWarning: RangeError:超出了最大调用堆栈大小
Meteor 1.8.1
项目在1.6.x、MongoDB 3.2.x上运行良好
mlab把我推到了mongo 3.6.x,现在我的一些图表(chart.js)和表格(aslagle:reactive-table)不能工作了。
这两个都是通过聚合/管道生成的(下面的示例)。
长话短说,我已经忽略这个项目几个月了,刚刚回到它,遇到了这个问题,并尝试更新到1.8.1。我的版本是mongo 4.0.6
图表和表格仍然无法工作,我认为这是因为我缺少对聚合和/或管道中的语法/结构的一些更新。我在这里很可能是错的,因为我生疏了,不是一个专业的开发人员,正如前面提到的,我已经有几个月没有接触过这个了。
下面是一个失败的聚合/管道,用于绘制折线图(Chart.js):
pointTrendsSprt: function(uid, sp){
var pipeline = [
{ $match: {"userId": uid, "sport":sp, "slate": {$exists: true} } },
{ $project: {slate:1, sport:1, pointsWon:1, createdAt:1} },
{ $group: {
_id: "$slate",
sport: {"$addToSet": "$sport"},
pointsWon: {"$sum": "$pointsWon"},
createdAt: {"$max": "$createdAt"}
}
},
{ $sort: { "createdAt":1 } }
];
return Results.aggregate(pipeline);
},下面是aslagle中的另一个用法:reactive-table:
allXteam: function(uid){
var pipeline = [
{ $match: {"userId": uid, "win": "true"} },
{ $project: {team:1, match:1, play:1, Count: "$count"} },
{ $group:
{_id: "$team",
play: {"$addToSet": "$play"},
count:{$sum:1}}
}
];
return Picks.aggregate( pipeline );
},这两个文件都在服务器文件夹中的methods.js文件中。我在客户端js文件中使用Meteor.call来设置从中提取图表和表格的会话变量。
正如前面提到的,我认为我需要修复聚合/管道中的某些东西,但尝试添加“cursor”和“explain”,但在这种假设中要么做得不对,要么就是错了。
如有任何建议/指导,我们将不胜感激。
发布于 2019-09-11 05:25:27
我发现this solution起作用了:
Collection.rawCollection().aggregate().toArray()
这是我最后的重构(尽管我将不得不研究'Meteor.wrapAsync‘表单:
allXteam: async function(uid){
var pipeline = [
{ $match: {"userId": uid, "win": "true"} },
{ $project: {team:1, match:1, play:1, Count: "$count"} },
{ $group:
{_id: "$team",
play: {"$addToSet": "$play"},
count:{$sum:1}}
}
];
const aXt = await Picks.rawCollection().aggregate( pipeline ).toArray();
return aXt;https://stackoverflow.com/questions/57779821
复制相似问题