当我有更多内容时,发布我所有的图像会减慢我的应用程序吗?

Will a publication of all my images slow down my app when I will have more content?

我目前正在使用 EasySearch 作为我的应用程序的搜索解决方案,我对 pub/sub 的搜索结果有疑问。

基本上,搜索的工作方式是用户将进行搜索并返回一些帖子(我有一个名为 Posts 的 collections,我在其中实现了 EasySearch ).

我假设 EasySearch 可能会根据搜索查询的结果自动发布或订阅,所以我不认为我应该担心向客户端发送太多数据? (如果我错了请更正)。

但是,我现在遇到的问题是每个帖子都与来自 collection 的图像相关联,称为图像,其中我的 pub/sub 只是发布所有内容并订阅所有来自客户端和服务器,与搜索完全无关。

我只是想知道这是否意味着我将无法扩展,因为无论搜索如何,我都会将每张图片发布给客户?

Post collection

Posts = new Mongo.Collection('posts');

Posts.initEasySearch(['firstName', 'lastName', 'degreeStudy', 'tags'], {
    'limit' : 20,
    'use' : 'mongo-db'
});

Posts.allow({
  update: function(userId, post) { return ownsDocument(userId, post); },
  remove: function(userId, post) { return ownsDocument(userId, post); },
});

图片collection

Images = new FS.Collection("images", {
  stores: [new FS.Store.GridFS("images")]
});

显示搜索结果的模板页面

<template name="postPage">

  <div class="container">

    {{#ifEsHasNoResults index="posts"}}
      <div class="jumbotron no-results"> <h1>No results found!</h1></div>
    {{/ifEsHasNoResults}}

    {{#ifEsIsSearching index="posts"}}

        {{>loading}}

        {{else}}

        {{#esEach index="posts"}}
          {{> postItem}}
        {{/esEach}}

        {{> esLoadMoreButton index="posts"}}

      {{/ifEsIsSearching}}

  </div>

</template>

简而言之,如何发布与 easySearch 结果相关的图片 collection?

我认为您将出版物返回的 cursor 与数据本身混淆了。 cursor 就像一种无需加载所有数据即可进行动态查询的方法(除非您使用 {{# each images}} 等方式加载所有数据)。阅读 that for more info

话虽这么说(前面没有缩放问题),我假设在您的 {{> postItem}} 模板中,您有一个 image 帮助程序来获取图像 collection 中的相关图像。

这可行,但请记住:您的用户只需执行 Images.find() 相关命令即可打开他的控制台并在您的 Images collection 中获取任何图像。所以只要你没有私人内容就应该没问题。但是,如果这样做,您可能希望使用一种方法来获取图像而不是 publishing/exposing 整个 collection.