好的,还是在我的玩具应用程序中,我想找出一组车主里程表上的平均里程.这对客户来说很容易,但无法扩展.正当但在服务器上,我不知道如何实现它.
问题:
- 如何在服务器上实现一些东西,然后在客户机上使用它?
- 您如何使用mongo的$avg聚合功能来利用其优化的聚合功能?
- 或者(2)如何在服务器上进行映射/缩减,并使其可供客户端使用?
@HubertOG的建议是使用Meteor.打电话,这很有道理,我做到了:
# 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
总是一个空返回.在服务器上处理东西似乎是一个非常常见的用例,我一定忽略了什么.那会是什么?
谢谢