好的,仍然在我的玩具應用程序中,我想了解一組車主的里程錶的平均里程數。這在客戶端很容易,但不能擴展。對?但在服務器上,我不完全知道如何完成它。流星中的平均彙總查詢
問題:
- 如何實現在服務器上的東西,然後用它在客戶端上?
- 如何使用mongo的$ avg聚合函數來利用其優化的聚合函數?
- 或者(2)您如何在服務器上執行map/reduce並將其提供給客戶端?
通過@HubertOG的建議是使用Meteor.call,這是有道理的,我這樣做:
# Client side
Template.mileage.average_miles = ->
answer = null
Meteor.call "average_mileage", (error, result) ->
console.log "got average mileage result #{result}"
answer = result
console.log "but wait, answer = #{answer}"
answer
# Server side
Meteor.methods average_mileage: ->
console.log "server mileage called"
total = count = 0
r = Mileage.find({}).forEach (mileage) ->
total += mileage.mileage
count += 1
console.log "server about to return #{total/count}"
total/count
這似乎做工精細,但它並不因爲靠近我可以告訴Meteor.call
是異步調用,並且answer
將始終爲空返回。處理服務器上的東西似乎是一個常見的用例,我必須忽略某些東西。那會是什麼?
謝謝!
我不想離開這個答案沒有「謝謝你。」這是一個非常棒的答案。我暫時離開了另一個項目,但安德魯,你明顯地想到了這一點,我非常感激。 –
@SteveRoss不用客氣。感謝您的客氣話! –
優秀聚合示例的榮譽。這是唯一一個爲我工作的人。而且你沒有包裝,MongoInternals和發佈功能就可以做到這一點......爲紅色天鵝絨蛋糕錦上添花。感謝你的分享! – AbigailW