如何知道用户文档何时加载到Meteor帐户中
我理解,在编写依赖于将集合加载到客户机minimongo的代码时,应该显式订阅集合,并在完成加载时传入相应的回调 我的问题是,我在users集合中存储了很多页面需要访问的重要子文档。我正在使用Meteor帐户,并试图找出一种类似的方法来等待整个登录用户文档可用。使用此选项进行测试时:如何知道用户文档何时加载到Meteor帐户中,meteor,Meteor,我理解,在编写依赖于将集合加载到客户机minimongo的代码时,应该显式订阅集合,并在完成加载时传入相应的回调 我的问题是,我在users集合中存储了很多页面需要访问的重要子文档。我正在使用Meteor帐户,并试图找出一种类似的方法来等待整个登录用户文档可用。使用此选项进行测试时: console.log(Meteor.user()); 在登录的情况下,它似乎首先只使用_id注册一个对象,然后再发送其他字段(我知道我必须明确添加其他字段,以便在电子邮件之外从服务器发布,等等) 在执行代码之前
console.log(Meteor.user());
在登录的情况下,它似乎首先只使用_id注册一个对象,然后再发送其他字段(我知道我必须明确添加其他字段,以便在电子邮件之外从服务器发布,等等)
在执行代码之前,是否有办法等待登录的用户文档完全加载
谢谢 (以前的Meteor.autorun)在某些反应性的更改时重新运行,这可能适合您的用例:
客户端js
Deps.autorun(function () {
if(Meteor.user() {
//Collection available
}
});
Meteor.subscribe("userdata", function() {
//Collection available
});
如果您使用的是,还可以使用其回调。请在上阅读,因为您可能需要对其进行一些自定义,并删除autopublish包,以及将其他集合设置为订阅
服务器js:
Meteor.publish("userdata", function () {
//You might want to alter this depending on what you want to send down
return Meteor.users.find({}, {}});
});
客户端js
Deps.autorun(function () {
if(Meteor.user() {
//Collection available
}
});
Meteor.subscribe("userdata", function() {
//Collection available
});
一定要修改上面的发布功能,因为它当前的编写方式将向所有用户发布所有用户数据,这既是一个重大的安全漏洞,也是一个糟糕的性能。这就是为什么我说需要修改它以发送您想要的字段。