问题标签 [meteor-publications]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
50 浏览

javascript - 更改所有客户端的 Meteor 收藏订阅

我正在开发一个 webapp,我需要一个与admin关联的客户端来触发一个事件(例如,在下拉列表中选择一个新值),这反过来会告诉所有其他连接的客户端更改订阅,可能使用参数,即新选择的值。

类似的东西

当然,这仅适用于当前客户。
我认为的一种方法是保留一个单独的集合,该集合指向要使用的当前集合,因此客户端可以以编程方式对其进行操作。感觉很麻烦,你。

有没有流星方式来实现这一目标?
谢谢

0 投票
1 回答
122 浏览

javascript - 如何在 Meteor.js 中的服务器端转换功能后设置 mongo 投影?

在应用需要访问原始文档的转换后,我需要限制从发布函数发送到客户端的字段数。

我基本上是在尝试避免向客户端发送潜在的巨大数组,并运行一堆检查以返回一个漂亮的整洁对象以供使用。

这是我现在拥有的功能 - 它可以工作,只是不是我想要的方式,基本上限制了观察功能的字段。有没有办法在观察/变换之后添加投影。

0 投票
1 回答
90 浏览

meteor - UI helper 函数在 Meteor 中没有订阅数据

我对流星相当陌生。

我有一个模板帮助函数,它需要处理我从服务器端发布的数据。当页面加载时,下面 profile 的值为undefined。但在那之后,当我从浏览器的控制台执行相同的代码片段时,它工作得很好。据我了解,模板助手是在数据发布之前执行的。如何等到数据发布后再运行 UI 助手?

这是相关代码。


辅助函数


HTML 模板

缩略图模板


出版物


路由器

---

更新 1

我稍微更新了路由器。但这似乎没有任何区别。

0 投票
1 回答
498 浏览

meteor - 发布 onStop 回调如何在 Meteor 中工作?

遵循Meteor 文档,该onStop()函数执行以下操作:

注册一个回调函数以在订阅停止时运行。

onStop()现在,我尝试在我的出版物中跟踪使用此功能离开页面的用户。

我希望它可以直接工作,因为在模板路由控制器中调用了订阅,并且离开页面后我发布的集合不可用。但我在这里是因为即使发布在客户端上不再有效,onStop()也不会触发。我不确定它是如何工作的,所以这里有一些问题:

  • onStop()如果用户离开它所附加的路线,是否会触发发布?
  • 如果没有,是否有内置的 Meteor 机制来停止未使用的发布/订阅?如果是,它是如何工作的?是超时吗?
  • 是否有必要使用 aCursor.observe()或 aCursor.observeChanges()来使用/触发onStop()回调?
  • 为什么onStop()当我关闭浏览器或选项卡,或从当前用户帐户注销时没有触发回调?
0 投票
1 回答
57 浏览

meteor - 我应该基于客户端游标还是发布来实现延迟加载?

我需要确认一件事。考虑到一个发布返回一个游标,游标是客户端相关集合的句柄:

只要我没有fetch()光标文件,我就没有实际下载他们的数据?

这是否意味着它可能是过滤出版物中可发布文档并在客户端延迟加载它们的好方法?

0 投票
1 回答
141 浏览

meteor - 流星光标计数和 forEach

我需要在发布功能的集合项中添加minmax字段,并按此字段过滤项目。我通过使用forEach光标找到了解决方案:

但现在Counts.publish我的光标返回错误的计数。在这种情况下如何计算我的光标?

0 投票
1 回答
131 浏览

meteor - 发布响应式集合摘要数据

我有一个集合,但不想将其全部发布给客户,因为它很大,但是我需要从这个集合中发布一些统计数据(如计数、总和、平均等)。

我不能使用methods,因为它们不是反应性的,而且我也不能使用publish,因为它只适用于cursor.

我有一个想法来创建额外的集合并将这些统计信息存储在其中,但这看起来有点奇怪。

最好的方法是什么?

解决方案

在服务器端:

在客户端创建集合:

使用统计:

0 投票
1 回答
127 浏览

javascript - 当发布的游标基于另一个集合内容时,如何构建响应式发布?

我有两个系列itemsworksheet.

每个工作表都有一个item数组字段,我在其中存储所有工作表items_id。基于此字段,我发布当前工作表的项目。该出版物如下所示:

本出版物在当前页面 Iron-router 控制器中订阅。

这是问题所在:

我使用带有模板级别订阅的专用组件来更改当前工作表items字段。该组件加载在引导箱中。

当我更改当前工作表items字段时,我的主要出版物不会更新以将更改考虑在内。但是,如果我重新加载页面,则会考虑所做的更改。

我应该如何设计我的出版物以使其在依赖于另一个集合的情况下保持反应性?

0 投票
1 回答
395 浏览

mongodb - 使用流星黑客聚合:聚合(我为什么要使用 $out)?

这是对这个问题的重要修改,因为我已将出版物更改为一种方法并缩小了问题的范围。

meteorhacks:aggregate用于计算和发布用户选择的一系列公司的公司估值数据的平均值和中位数。选择保存在 Valuations 集合中以供参考,聚合数据来自 Companies 集合。

下面的代码可以一次性使用(尽管它不是反应式的)。但是,用户将在数千valuationId秒内重新运行此聚合。由于$out在插入新结果之前会先清除新集合,所以这里不能使用,需要保留每个实例的结果。我不明白为什么$out会被使用。

有没有办法只添加使用聚合结果更新现有的评估文档,然后订阅该文档?

服务器/方法

就在服务器上查看结果而言,上面的代码有效。在我的终端中,我看到:

0 投票
1 回答
177 浏览

meteor - 如何仅发布反应性布尔标志?

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

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

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

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

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

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

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

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

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