据我所知,在编写依赖于加载到客户端minimongo中的集合的代码时,您应该明确订阅该集合,并在完成加载时传入适当的回调。
我的问题是我存储了很多重要的子文档,我的页面需要在用户集合中访问它们。我正在使用Meteor Accounts,并试图找出一种类似的方式,等待整个登录用户文档可用。使用它来测试时:
console.log(Meteor.user());
登录的情况下,似乎它首先只使用_id注册一个对象,然后稍后发送其他字段(我知道我必须明确添加其他字段以便从服务器发布以外的电子邮件等)。
在执行我的代码之前,有没有办法让我等待登录的用户文档完全加载?
谢谢!
答案 0 :(得分:2)
Deps.autorun(以前是Meteor.autorun)重新运行,当某些反应发生变化时,可能适合您的用例:
客户端js
Deps.autorun(function () {
if(Meteor.user() {
//Collection available
}
});
如果您使用subscription,也可以使用其回调功能。在docs上阅读有关它的内容,因为您可能需要对其进行一些自定义,并删除自动发布包以及将其他集合设置为订阅
服务器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
});