【发布时间】:2017-07-02 15:24:57
【问题描述】:
好的,还是在我的玩具应用中,我想在一组车主的里程表上找出平均里程数。这在客户端上非常容易,但无法扩展。正确的?但是在服务器上,我并不完全明白如何完成它。
问题:
- 如何在服务器上实现一些东西,然后在客户端上使用它?
- 如何使用 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 将始终返回空值。在服务器上处理东西似乎是一个很常见的用例,我一定只是忽略了一些东西。那会是什么?
谢谢!
【问题讨论】:
标签: mongodb meteor aggregation-framework