Javascript 无论何时更新当前用户,都会刷新所有集合(实际上不是)

Javascript 无论何时更新当前用户,都会刷新所有集合(实际上不是),javascript,mongodb,meteor,angular-meteor,ddp,Javascript,Mongodb,Meteor,Angular Meteor,Ddp,我正在开发一个有角流星的网站,我遇到了一个奇怪的问题。在我的每个页面上都有一个聊天区,这些信息存储在聊天信息集合中并正确显示。问题是每次我编辑当前用户(手动mongo文档编辑或meteor方法内部更新)时,我的应用程序都会删除所有订阅。结果,聊天室中的信息消失了。但不仅聊天信息消失了。我过去知道问题的原因,但我几乎无法理解。以下是浏览器控制台输出中最有趣的部分: // On page load send Object { msg: "sub", id: "EPgQwMiDggM7

我正在开发一个有角流星的网站,我遇到了一个奇怪的问题。在我的每个页面上都有一个聊天区,这些信息存储在聊天信息集合中并正确显示。问题是每次我编辑当前用户(手动mongo文档编辑或meteor方法内部更新)时,我的应用程序都会删除所有订阅。结果,聊天室中的信息消失了。但不仅聊天信息消失了。我过去知道问题的原因,但我几乎无法理解。以下是浏览器控制台输出中最有趣的部分:

// On page load
send Object {
    msg: "sub",
    id: "EPgQwMiDggM7wafCN",
    name: "chatMessages",
    params: Array[0]
}
receive Object {
    msg: "added",
    collection: "chatMessages",
    id: "G6tv76ZSJYXmnsrAY",
    fields: Object
}

// Calling 'createArenaRoom' method
send Object {
    msg: "method",
    method: "createArenaRoom",
    params: Array[1],
    id: "8",
    randomSeed: "516b5128615f1c7849f2"
}

// User updated
receive Object {
    msg: "changed",
    collection: "users",
    id: "sQnaLPj2FvH692rQM",
    fields: Object
}

// ??? WHY ????
send Object {
    msg: "unsub",
    id: "EPgQwMiDggM7wafCN"
}
receive Object {
    msg: "removed",
    collection: "chatMessages",
    id: "G6tv76ZSJYXmnsrAY"
}
receive Object {
    msg: "nosub",
    id: "EPgQwMiDggM7wafCN"
}
顺便说一下,数据不会从mongo中删除。如果我刷新页面,它会再次显示聊天信息和其他所有内容


任何帮助都将不胜感激。

最后我找到了问题的原因。在main.html中,我有如下内容:

<div ng-if="$root.loggingIn" class="loading-screen"></div>
<myapp ng-if="!$root.loggingIn"></myapp>


这样做是为了在当前用户的数据可用之前防止组件的代码执行。我从
myapp
指令中删除了
ng if=“!$root.logging”
,问题消失了。我只能猜测它为什么会引起如此奇怪的行为。现在我在组件中使用
this.autorun()
来等待用户数据。

查看代码会更容易。