每当我更新当前用户时,所有集合都会被刷新(实际上不是)
Whenever I update current user, all collections are flushed (actually not)
我正在开发一个有角流星的网站,我遇到了一个奇怪的问题。在我有聊天块的每个页面上,消息都存储在集合chatMessages中并正确显示。问题是,每次我编辑当前用户(手动mongo文档编辑或在流星的方法内更新)时,我的应用程序都会删除所有订阅。结果,消息从聊天中消失了。但不仅聊天信息消失了。我用这段代码来理解问题的原因,但我几乎无法理解。以下是浏览器控制台输出中最有趣的部分:
// 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.loggingIn"
,问题就消失了。我只能猜测为什么它会引起如此奇怪的行为。现在我在组件中使用this.autorun()
来等待用户数据。
相关文章:
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- 如何在不刷新页面的情况下更新显示框
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 刷新页面时hasClass不起作用
- X秒后刷新select元素
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 触发媒体查询断点时刷新页面
- 如何刷新列表框内容onclick或blur事件
- 如何在火狐浏览器中禁用F5和刷新
- 刷新后,setTimeout将工作或不工作
- 每当我更新当前用户时,所有集合都会被刷新(实际上不是)