gpt4 book ai didi

javascript - 从发布到助手的 Meteor 平均聚合

转载 作者:行者123 更新时间:2023-12-02 15:59:57 24 4
gpt4 key购买 nike

我正在开发一个 meteor 项目,我需要获得平均评论分数。我遇到了meteorhacks:aggregate包但无法实现它。

发布:

Meteor.publish('supplierReviewsOverall', function(userid){

var pipeline = [
{
$match: {
supplier: userid
}
},
{
$group: {
_id: null,
rate_overall : { $avg: "$rate_overall" },
rate_timeliness : { $avg: "$rate_timeliness" },
rate_quality : { $avg: "$rate_quality" },
rate_value : { $avg: "$rate_value" }
}
}
]

return SupplierReviews.aggregate(pipeline);
});

我收到此错误:错误:发布函数返回了非游标数组。

那么,我如何获取帮助器的值,以便我可以将数据放入 HTML 中?

非常感谢!!!

最佳答案

基本答案:这是因为您需要在发布中返回一个Cursor

你还有太多的可能性:

  1. 您可以使用聚合结果重新创建游标,但请注意,您将失去 react 性:这意味着除非重新加载模板,否则您将不会获得外部更新。为此,您只需将 SupplierReviews.aggregate(pipeline); 包装到 var buffer = SupplyReviews.aggregate(pipeline); 中,并对其进行迭代以添加每个将数组中的项目放入发布光标中:

    _(缓冲区).each(函数(项目){
    self.add('SupplierReviews', item._id, item);
    };
    self.ready();

  2. 我个人最喜欢的:您不需要聚合(并且松散 react 性来实现平均操作。您可以使用简单的Collection.find()查询和使用 cursor.Observe 和条件修改的巧妙组合来扩展/减少/修改它。看看这个答案,它对我有用(我需要一个总和,但你可以轻松调整它)平均):https://stackoverflow.com/a/30813050/3793161
  3. 如果您计划拥有多台服务器,请注意,每台服务器都必须观察,因此可能会导致不必要的负载。所以我的第三个解决方案是 use collection hooks或为您需要的每个值更新附加字段average的方法。请参阅@David Weldon 对此的回答:https://stackoverflow.com/a/31190896/3793161

关于javascript - 从发布到助手的 Meteor 平均聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com