【发布时间】:2015-04-21 00:59:11
【问题描述】:
我要做什么...
我需要使用一些存储在用户Meteor.user() 对象中的子属性,例如Meteor.user().profile.preferences.preference_one、Meteor.user().profile.preferences.preference_two 等。这些子属性在反应式自动运行块中使用,因为在它们发生变化时必须进行重新计算。
我的问题是……
我发现,当我在反应性块中引用这些子属性的值时,自动运行会触发 任何 更改 Meteor.user() 对象,包括不以任何方式影响我明确引用的数据。例如,如果更新了Meteor.user().profile.name,那么任何包含Meteor.user().profile.preferences.preference_one 或Meteor.user().profile.preferences.preference_two 的自动运行也会被触发,因为它们都有一个共同的父级。
I have seen a similar question 处理限制 Meteor 的反应范围,但它处理自定义集合,而不是 Meteor.users 集合。我看不到那里的解决方案如何适用,因为它们在订阅中指定字段以限制向客户端发布的子属性,就我而言,我需要Meteor.user() 的所有子属性。但我需要能够选择我对哪些子属性做出反应!
在本地存储子属性值,然后对每个更改进行比较当然可以,但它是一种强力解决方案,因为它需要额外的逻辑,并且自动运行无论如何都会触发。
【问题讨论】:
标签: javascript mongodb meteor