2

我知道在编写依赖于加载到客户端 minimongo 的集合的代码时,您应该显式订阅集合并在完成加载时传递适当的回调。

我的问题是我在用户集合中存储了很多我的页面需要访问的重要子文档。我正在使用 Meteor Accounts,并试图找出一种类似的方法来等待整个登录的用户文档可用。使用它进行测试时:

console.log(Meteor.user());

登录的情况下,似乎它首先只使用_id注册一个对象,然后稍后发送其他字段(我知道我必须明确添加其他字段以从服务器发布电子邮件等)。

有没有办法让我在执行我的代码之前等待登录的用户文档完全加载?

谢谢!

4

1 回答 1

2

Deps.autorun(以前的 Meteor.autorun)在某些反应性变化时重新运行,这可能适合您的用例:

客户端js

Deps.autorun(function () {
    if(Meteor.user() {
          //Collection available
      }
    });

如果你使用订阅,你也可以使用它的回调。在文档上阅读它,因为您可能需要对其进行一些自定义,并删除自动发布包以及将您的其他收藏设置为订阅

服务器js:

Meteor.publish("userdata", function () {
    //You might want to alter this depending on what you want to send down
    return Meteor.users.find({}, {}});
});

客户端js

Meteor.subscribe("userdata", function() {
    //Collection available
});
于 2013-03-13T22:10:31.723 回答