Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道用户文档何时加载到Meteor帐户中_Meteor - Fatal编程技术网

如何知道用户文档何时加载到Meteor帐户中

如何知道用户文档何时加载到Meteor帐户中,meteor,Meteor,我理解,在编写依赖于将集合加载到客户机minimongo的代码时,应该显式订阅集合,并在完成加载时传入相应的回调 我的问题是,我在users集合中存储了很多页面需要访问的重要子文档。我正在使用Meteor帐户,并试图找出一种类似的方法来等待整个登录用户文档可用。使用此选项进行测试时: console.log(Meteor.user()); 在登录的情况下,它似乎首先只使用_id注册一个对象,然后再发送其他字段(我知道我必须明确添加其他字段,以便在电子邮件之外从服务器发布,等等) 在执行代码之前

我理解,在编写依赖于将集合加载到客户机minimongo的代码时,应该显式订阅集合,并在完成加载时传入相应的回调

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

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
});

一定要修改上面的发布功能,因为它当前的编写方式将向所有用户发布所有用户数据,这既是一个重大的安全漏洞,也是一个糟糕的性能。这就是为什么我说需要修改它以发送您想要的字段。