问题标签 [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 投票
1 回答
422 浏览

meteor - Meteor 1.0.X 中大集合的性能

Meteor 世界已经有了很多发展,因此很难找到适用于当前版本的答案,因为您为旧的过时版本找到了过多的答案。

我有一个应用程序在特定集合中有大量数据。很多我的意思是介于 10k-100k 之间,而且很有可能更多。本质上它是日志数据,我需要在没有分页的表中显示结果(如尾部)。在研究优化大型集合的方法时,我不断遇到类似的问题,这些问题似乎适用于旧版本的 Meteor。

所以,在我看来,我的选择是:

  • 使用快速渲染插件在订阅之前显示页面(至少这是我对其工作原理的理解)。
  • 使用某种渐进式发布功能,它首先加载有限的更多相关数据位,然后通过扩展窗口/限制渐进式加载剩余数据(但不确定这是否会导致服务器负载更重)。似乎有一个“渐进式发布”插件,但它似乎不再处于积极开发中。
  • 通过索引优化查找(创建集合时如何指定?)
  • 进一步分析和优化模板(不确定如何)。
  • 其他一些我还没有想到的方法......
  • 以上所有的一些组合。

以这种方式发布和呈现大量数据的正确方法是什么?

0 投票
0 回答
53 浏览

meteor - 您如何防止某个领域在某些时候被发布?

如果转换在发布功能中起作用,我会这样做:

0 投票
0 回答
279 浏览

meteor - 如何发布流星法的结果?

Collection1 - 用户私人信息 Collection2 - 用户公共信息

我有一个要求,用户将特定的搜索条件设置为对象并通过 Meteor.call 将其发送到服务器

在服务器端

我们如何在此处引入响应性,以便在新用户满足查询时获得更新的结果。

0 投票
1 回答
31 浏览

jquery - 流星JS对象发布问题

我在为我的 jQuery 插件发布数据时遇到问题。该插件是 autoform 添加包,其定义如下:

我需要定义这个产品列表。

当我将其定义为对象时:

,它工作得很好

但是我需要从集合中获取productList,所以我这样定义它:

还有我的订阅和发布:在我的/服务器中:

lib/router 中的子目录:

所以问题是,目前它只有在我打开自动发布时才能找到我的 productList。如何正确发布/订阅我的:

当我打开新的私人会话并在我的浏览器窗口中进行刷新之前,当我打开自动发布时,我的插件也可以工作。刷新后它不起作用,我需要打开新的私人窗口。使用硬定义的对象/数组,插件在任何情况下都能很好地工作。

0 投票
1 回答
42 浏览

meteor - 发布所有先前订阅的联合

我有一个大型可搜索数据集。在呈现页面之前发送整个数据集的速度令人无法接受,因此我们目前只是发送包含搜索的部分,因此

假设我在 1 月份有 10,000 个事件,在 2 月份有 5,000 个事件。

我想要的是只需要发布一次这些记录,并且由此产生的客户端集合是所有先前结果的联合。

我不认为 pub/sub 像这样开箱即用,但是有什么方法可以近似这种行为吗?

0 投票
2 回答
282 浏览

meteor - 使用 Meteor 建模和发布基于关注者的提要

我正在开发一个用户可以关注其他用户的简单应用程序。用户可以加星为帖子用户的提要由他们关注的用户加星标的帖子组成。其实很简单。然而,这一切在 Mongo 和 Meteor 中变得复杂......

我能想到的基本上有两种建模方法:

  1. 用户有一个属性 ,following它是用户遵循的用户 ID 数组。此外,一个帖子有一个属性 ,starrers它是一个用户 ID 的数组,该数组已为该帖子加注星标。这种方法的好处是出版物相对简单:

    我们不会被动地倾听用户关注的人,但现在还不算太糟糕。这种方法的主要问题是(1)如果 1000000 人为一个帖子加注星标,单个文档将变得庞大且效率低下。另一个问题是(2)跟踪信息会很痛苦,例如用户何时开始关注另一个用户或用户何时为帖子加注星标。

  2. 另一种方法是再创建两个集合,Stars并且Follows. 如果用户为帖子加注星标,那么我们会创建一个带有属性userIdpostId. 如果一个用户关注另一个用户,那么我们创建一个带有属性userIdfollowId. Users这为我们提供了和文档大小较小的优势Posts,但在查询方面却很复杂,尤其是因为 Mongo 不处理连接!

现在,我做了一些研究,人们似乎同意第二个选择是正确的选择。现在我遇到的问题是有效地查询和发布。基于关于 Advanced Publications 的 Discover Meteor 章节,我创建了一个出版物,该出版物发布由用户的关注者加星标的帖子 - 排序和限制。

虽然这行得通,但在规模上似乎非常有限。特别是,我们必须编制每个关注者的每个已加星标的帖子的列表。此列表的大小将很快增长。$in然后我们对所有帖子进行大量查询。

另一个烦恼是在我们订阅后查询客户端上的提要:

就好像我们把所有这些工作都做了两次。首先,我们在服务器上完成所有工作以发布提要。然后我们需要在客户端再次执行完全相同的逻辑来获取这些帖子......

我的问题是关于一切的设计问题。如何根据关注者的帖子有效地设计此提要?我应该使用什么集合/集合模式?我应该如何创建合适的出版物?如何在客户端查询提要?

0 投票
1 回答
96 浏览

meteor - 如何制作一个使用计数器响应式计算值的函数

我是流星新手,我尝试使用 tmeasday:publish-counts 包发布一些计数。当我刚刚读取计数时,反应性开箱即用,但是当我在 Template.helper 函数中使用计数时,当计数发生变化时,该函数不会更新。

这是我所拥有的:

  • 在服务器上:

    /li>
  • 在客户端:

    /li>
  • 在我的模板中,我有一个:

    /li>
  • 它使用这个子模板:

    {{getPublishedCount 'searches'}} 更新正常。它只是获取我的“搜索”计数器并在计数器更改时更新。

但是,子模板中的计数器在启动时执行良好,但在任何依赖计数器发生更改时从不更新。

所以我的问题是,我如何以及在哪里让我的 nbSearchesThisWeek 助手对依赖计数器值的更改做出反应?当我阅读有关 Deps、Tracking 和 ReactiveVars 的文档时,我感到非常困惑……我真的不明白应该在哪里使用这些东西来使我的用例工作……

谢谢你的帮助。

菲利普

0 投票
2 回答
78 浏览

meteor - Meteor:通过客户端的发布来源过滤文档

我遇到了以下问题:

  • 我有一个自定义服务器端发布“P1”,它从集合“C”返回一组文档,服务器是唯一能够构建这个子集的服务器

  • 在我的客户上,我订阅了 2 个发布(“P1”和“P2”)返回集合“C”的 2 个子集,它们可能重叠。

  • 我想在我的客户端上仅列出出版物“P1”返回的元素,即服务器只能生成集合的元素。问题是我无法使用常规查找查询来过滤集合“C”并获取子集“P1”。这是因为只有服务器才能随意这样做。

然后,我如何根据文档的发布来源在客户端过滤文档?

0 投票
1 回答
730 浏览

meteor - 在发送到客户端之前修改 Meteor.publish 中的数据

我有以下用例:

  • 我在后端的 MongoDB 中有一个用户表,它是与前端不同的服务。我使用 DDP.connect() 连接到这个后端服务。
  • 每个用户都有一组“主题”
  • users 表中的每个主题都由 id 引用,而不是 name。有一个名为“subjects”的单独表,它按 id 保存主题。

  • 我想将用户发布到客户端,但是我希望发布的用户首先填充主题。

受这篇博文的启发,我尝试了以下方法:

这会在后端产生以下错误:
Exception from sub users id akuWx5TqsrArFnQBZ Error: Could not find element with id XhQu77F5ChjcMTSPr to change.

所以我尝试更改_this.changed_this.added. 我没有收到任何错误,但是客户端 minimongo 中没有显示更改,即使我可以看到该populate功能通过该console.log(user)行工作。

0 投票
0 回答
48 浏览

meteor - Meteor Publish/Subscribe with limit 不返回新记录

我有一个非常大的集合(100k 或更多),我不想返回整个集合,也不想渲染。我使用了模板级订阅模式。但是,我首先按最新文档排序。添加较新的文档时,它们不会显示并将其他文档向下推到页面之外。

我想:

  • 显示最新的 100 个文档
  • 允许他们根据需要查看更多内容
  • 但始终显示最新记录

有没有办法做到这一点?