Как правильно численно разбивать посты в блогах в Firebase, используя URL-параметры - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть приложение для блога, построенное на React Redux и использующее Firebase.Предполагается, что в блоге есть страница «просмотреть все сообщения», которая ограничена показом 10 сообщений на странице и разбита на страницы в соответствии с текущим параметром ULR;то есть, скажем, у меня есть 100 сообщений, если мой текущий URL будет примерно таким, как "example.com/posts/page/7", мне нужно отправить пользователю сообщения от 71 до 80 в хронологическом порядке.

Что я пробовал«делать и работать» запрашивает первые (: urlParam * 10) сообщения в блоге и фильтрует результаты во внешнем интерфейсе.В предыдущем примере это означает, что я GET запросил первые 80 постов, а внутри функции рендеринга React я отфильтровал только посты между 71 и 80.

Этот способ, очевидно, неэффективен и совсем не масштабируется.Каков наиболее эффективный способ сделать это тогда?

Я заметил, что в большинстве обучающих программ по разметке страниц пожарного магазина они используют, например, ссылку на пост 70 моего примера и запрашивают следующие 10 постов.В моем случае это не очень хорошее решение, поскольку пользователь может произвольно переходить на любую страницу, не видя предыдущих.

1 Ответ

0 голосов
/ 20 апреля 2019

Не следует извлекать все данные одновременно, это может быть связано с производительностью. Вместо этого запрашивайте только сообщения, которые должны быть показаны пользователю.

Нам просто нужно передать три параметра в URL, как показано ниже, чтобы он работал: -

1) pageId - Если пользователь запрашивает, скажем, 71 - 80, то pageId будет равен 7 для размера страницы 10

2) pageSize - Нет элементов, запрошенных пользователем, например, 71-80 - это 10 элементов,

3) разбиение на страницы - Если разбиение на страницы имеет значение true, тогда учитываются pageId и pageSize, в противном случае возвращаются все данные.

Теперь у нас есть понимание атрибутов, давайте обсудим различные случаи:

1) Нам нужны первые 10 элементов, pageId = 1 и pageSize = 10

Request:-
apiUrl?PageSize=10&PageID=1&Pagination=true

Response:-
data: [...] // length 10
pageID: 1
pageSize: 10
totalPage: 262
totalSize: 2617

2) Нам нужны элементы 71 - 80, pageId = 7 и pageSize = 10

    Request:-
apiUrl?PageSize=10&PageID=7&Pagination=true

Response:-
data: [...] // length 10
pageID: 7
pageSize: 10
totalPage: 262
totalSize: 2617

3) Нам нужно 71 - 120, pageId = 7 и pageSize = 50

Request:-
apiUrl?PageSize=50&PageID=7&Pagination=true

Response:-
data: [...] // length 50
pageID: 7
pageSize: 50
totalPage: 53
totalSize: 2617

Надеюсь, это поможет !!

...