Будет ли публикация всех моих изображений замедлять работу моего приложения, когда у меня будет больше контента?

В настоящее время я использую EasySearch для поиска решения для своего приложения, и у меня есть вопрос о публикации/подписке результатов поиска.

По сути, поиск работает так, что пользователи вводят поиск и возвращают несколько сообщений (у меня есть коллекции под названием «Сообщения», где я реализовал EasySearch).

Я предположил, что EasySearch, вероятно, автоматически опубликует или подпишется в зависимости от результатов поисковых запросов, поэтому я не думаю, что мне следует беспокоиться об отправке слишком большого количества данных клиенту? (Поправьте, если ошибаюсь).

Однако проблема, с которой я сталкиваюсь на данный момент, заключается в том, что каждое сообщение связано с изображением из коллекции под названием «Изображения», где моя публикация/подписка просто публикует все и подписывает все с клиента и сервера и вообще не связано с поиском.

Мне просто интересно, означает ли это, что я не смогу масштабироваться, так как я буду публиковать все изображения клиенту независимо от поисков?

Коллекция постов

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>

Короче говоря, как я могу сделать свой паб и подколлекцию коллекций изображений связанными с результатом easySearch?


person Tom chan    schedule 24.06.2015    source источник
comment
Вы должны отредактировать заголовок вопроса, указав что-то более понятное, например, Замедлит ли публикация всех моих изображений мое приложение, когда у меня будет больше контента?   -  person Billybobbonnet    schedule 24.06.2015


Ответы (1)


Я думаю, вы путаете cursor, возвращаемый вашей публикацией, с самими данными. cursor похож на способ выполнения динамических запросов без загрузки всех ваших данных (если только вы не загрузите их все, например, с помощью {{# each images}}). Прочитайте это для получения дополнительной информации

При этом (впереди никаких проблем с масштабированием) я предполагаю, что внутри вашего шаблона {{> postItem}} у вас есть помощник image, извлекающий связанное изображение из вашей коллекции изображений.

Это будет работать, но имейте в виду: ваш пользователь может открыть свою консоль и получить любое изображение из вашей коллекции Images, просто выполнив команду, связанную с Images.find(). Так что все должно быть в порядке, если у вас нет личного контента. Однако, если вы это сделаете, вы можете использовать метод для получения вашего изображения вместо публикации/отображения всей коллекции.

person Billybobbonnet    schedule 24.06.2015
comment
Спасибо, теперь стало намного понятнее, да, это помощник для поиска изображений в зависимости от userId - person Tom chan; 24.06.2015
comment
Я рад, что смог помочь. Удачи тебе с твоим проектом :-) - person Billybobbonnet; 24.06.2015
comment
имейте в виду, что какое бы количество публикаций у вас ни было, оно попадает в коллекцию, из которой они взяты. Если у вас есть 3 паба, созданных из одной и той же коллекции, они в конечном итоге объединятся на стороне клиента. Лучшим способом доступа к нему будет использование одного курсора для каждой коллекции. При этом и с учетом всех обстоятельств курсор — довольно экономичный способ получить доступ к вашим данным. Вот мое мнение (не проверял, могу ошибаться)-› если вы не используете их слишком много (имеется в виду, скажем, 25+), все должно быть в порядке. Если @David Weldon или другой задира Meteor подтвердит это, это будет полезно. - person Billybobbonnet; 27.06.2015
comment
Привет, извините, чтобы вернуться к этому снова, но если у меня есть миллион пользователей, означает ли это, что мое приложение будет возвращать курсоры изображений миллионов пользователей? - person Tom chan; 21.07.2015
comment
Ну нет. У вас есть один курсор для вашей коллекции изображений, и вы просто используете его каждый раз, когда загружаете изображение. Вы просто получаете изображение, связанное с курсором публикации, когда вызываете его в своем шаблоне {{> postItem}}. Предполагается, что вы используете только одну публикацию изображений. Мой предыдущий комментарий был просто ответом на ваш общий вопрос. Публикация слишком большого количества курсоров также влияет на производительность? вопрос - person Billybobbonnet; 21.07.2015