好的,还是在我的玩具应用程序中,我想在一组车主的里程表上找出平均里程数。这在客户端上非常容易,但无法扩展。正确的?但是在服务器上,我不完全了解如何完成它。
问题:
- 你如何在服务器上实现一些东西然后在客户端上使用它?
- 如何使用 mongo 的 $avg 聚合函数来利用其优化的聚合函数?
- 或者替代(2)你如何在服务器上进行映射/减少并使其对客户端可用?
@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
总是返回空值。在服务器上处理东西似乎是一个很常见的用例,我一定只是忽略了一些东西。那会是什么?
谢谢!