[英]Meteor Avg Aggregate from Publish to Helpers
我正在做一個流星項目,需要獲得平均評分。 我遇到過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
。
您也有可能:
您可以使用聚合結果來重新創建游標,但會警告您,它將失去反應性:這意味着除非重新加載模板,否則您將不會獲得外部更新。 為此,您只需要包裝SupplierReviews.aggregate(pipeline);
放入var buffer = SupplierReviews.aggregate(pipeline);
並對其進行迭代以將數組的每個項目添加到發布游標中:
_(buffer).each(function(item){ self.added ('SupplierReviews', item._id, item); }; self.ready();
average
操作。您可以使用簡單的Collection.find()
查詢並使用巧妙的cursor.Observe
組合來擴展/減少/修改它。 cursor.Observe
和有條件的修改)看看這個答案,它對我有用(我需要一個總和,但您可以輕松地將其調整為平均值): https : //stackoverflow.com/a/30813050/3793161 observe
,否則可能導致不必要的負載。 因此,我的第三個解決方案是使用集合掛鈎或方法來為您需要的每個值更新其他字段average
。 請參閱@David Weldon對此的答案: https ://stackoverflow.com/a/31190896/3793161
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.