【发布时间】:2023-03-26 05:02:01
【问题描述】:
服务器控制台上的错误:UnhandledPromiseRejectionWarning:RangeError:超出最大调用堆栈大小
流星 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 );
},
这两个都在 server 文件夹中的 methods.js 文件中。我在客户端的 js 文件中使用 Meteor.call 来设置会话变量,图表和表格从中提取。
如前所述,我认为我需要在我的聚合/管道中修复一些问题,但尝试添加“光标”和“解释”,但在该假设中要么没有做对,要么只是错了。
任何建议/指导将不胜感激。
【问题讨论】:
-
聚合命令返回的结果在 Meteor 1.7 中发生了变化。详情见这里:docs.meteor.com/changelog.html#breakingchanges-8
-
感谢您的回复!我确实找到了一个与您分享的内容相匹配的解决方案,但忽略了在此处更新它,因此以防万一它对任何人有所帮助,我已将其添加为下面的“答案”
标签: mongodb meteor aggregate pipeline