0
我已經安裝了mongodb-aggregation軟件包,但在流星方法中進行聚合時,返回「undefined」。我認爲我錯過了一些基本的東西。如何進行聚合?任何建議都會很棒。使用meteor-mongo-extensions進行聚合
rate: function(ratingProp){
var user = Meteor.user();
var postId = ratingProp.postId;
var post = Posts.findOne({_id: postId});
var rateVal = ratingProp.rateVal;
// ensure the user is logged in
if (!user) {
throw new Meteor.Error(401, "You need to signin to rate.");
}
// ensure rating has rateVal
if (!rateVal){
throw new Meteor.Error(422, "No rating provided.");
}
// ensure rating has a post
if (!post){
throw new Meteor.Error(422, "Rating not associated with a post.");
}
Ratings.upsert({userId: user._id, postId: postId},
{$set: { rateVal: rateVal }}
);
// perform aggregation
var avgRate = Ratings.aggregate([
{$match:
// hard coded for testing
{postId: "D7f3WoDEGW3SqGKW9"}
},
{$group:
{
_id: null,
"avgRating":{$avg: "$rateVal"}
}
}
]);
// additional code...
謝謝!在方法外移動聚合後,我仍然收到未定義的內容。哪些軟件包支持聚合?我只能在大氣中找到mongodb-aggregation(我正在使用的那個)和mongodb-server-aggregation。 – Derek
鑑於你的例子,我會嘗試使用mongodb-server-aggregation。你可以把這個調用包裝在一個流星方法中,就像你的例子一樣,它應該工作得很好。要明白,這個功能最終應該被添加到核心Meteor集合中。在此之前的一切都只是一個補丁。 (讓我知道這是否爲你修復,謝謝!) – Sivli
我試過mongodb-server-aggregation,但是有同樣的undefined問題。我有一個破解的地方,我保持一筆數字並計算一個平均值,但它可能容易受到競爭條件的影響。當我完成我正在處理的其他一些事情時,我會嘗試回到mongodb-server-aggregation,看看我能否解決問題。 – Derek