Meteor,Iron Router和客户端/服务器中的集合状态

时间:2014-12-21 13:57:25

标签: meteor iron-router

这是我的代码:

Router.route "/", ->
  users = Meteor.users.find().fetch().length
  if users > 0
    @render 'header'
  else
    @render 'register'

问题很简单:路线被称为2次,首先是find(),后来是find.fetch()

我只想知道确定什么模板渲染的用户数,但在客户端需要先获取,在服务器中我可以做到,但我不知道如何说这个渲染来自客户的模板......

在找到结果并执行操作后,我需要回调之类的东西。怎么样?只确定长度并做出决定,这很简单!

1 个答案:

答案 0 :(得分:0)

您的路由被调用两次的原因是在服务器的数据到达客户端之前有一些延迟,所以当您第一次调用它时,

Meteor.users.find().fetch()

只是一个空数组。只有在几分之一秒后,它才会填充一些数据。一般情况下,您可以做的很少,但在您的特定情况下 - 因为您只需要知道用户是否已登录 - 您可以使用Meteor.userId()功能。

如果由于某种原因,您希望在路由操作之前获取集合数据,那么您应该使用waitOn挂钩与自定义订阅,该订阅负责获取该集合您感兴趣的数据。