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

时间:2015-06-24 10:06:53

标签: meteor meteor-blaze meteor-helper

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

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

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

然而,我现在遇到的问题是每个帖子都与来自名为Images的集合中的图像相关联,其中我的pub / sub只是发布所有并且从客户端和服务器订阅所有帖子而与搜索无关一点都不。

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

收集后

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); },
});

图片收藏

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>

简而言之,如何使我的pub和sub与图像集相关的easySearch结果?

1 个答案:

答案 0 :(得分:1)

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

这就是说(前面没有缩放问题),我假设在你的{{> postItem}}模板中,你有一个image帮助器在你的图像集中获取相关图像。

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