2

我的 webapp 允许其用户与项目进行交互。这些物品可以放入垃圾箱,从而从常规物品中删除。我有一个名为“垃圾箱”的专用子菜单,用户可以在其中回收或删除以前放入垃圾箱的项目。

我想有条件地显示垃圾桶菜单,前提是垃圾桶中有项目,具体取决于用户权限。

但是,我不想在用户进入垃圾箱子菜单之前发布垃圾箱中的项目。

我目前所做的是调用一个返回标志的方法(用户垃圾箱中是否有项目?)。但这不是反应性的:如果另一个用户丢弃了一个项目,子菜单只会在页面重新加载后出现。

如何发布反应性布尔标志?

我考虑cursor.Observe()过为每个菜单/用户使用一个,并通知创建(通过更新)或删除(通过删除)使用publication.changed()一个项目(带有一个布尔字段)的假发布集合上的项目,但考虑到用于的资源,这似乎有点过头了任务。

我还考虑在项目状态更改时更新每个用户配置文件中的专用字段。再说一次,对于一个简单的功能来说,这操作太多了:我需要为每个涉及项目状态更改的操作评估每个用户权限,并且每次用户权限更改时,重新评估他回收每个项目的权限。

消耗较少的替代方法是将我的方法调用包装在菜单中template.Autorun()。但是,这不是反应式解决方案,因为它仅在重新呈现菜单时触发。

你遇到过同样的问题吗?您是否有可能的替代解决方案(性能方面)?

4

1 回答 1

0
  1. 创建一个新集合,例如:TrashBinState其中包含一个文档,该文档具有您的垃圾桶的(可能是共享的)状态
  2. 每当项目被丢弃时更新该文档服务器端
  3. 发布它
  4. 让每个客户订阅该出版物
于 2015-10-06T23:17:13.613 回答