Подтвердить что ты не робот

Каков наилучший способ сделать ajax pagination с MongoDb и Nodejs?

У меня есть mongodb и NodeJs. Соединение выполняется через mongoosejs.
Каков наилучший способ разработки ajax бесконечности прокрутки? Должен ли я использовать лимит и смещение?

4b9b3361

Ответ 1

"пропустить и ограничить" подход не очень эффективен, когда вы переходите далеко в набор данных. Это эффективный алгоритм Shlemiel the Painter.

Запросы диапазона намного эффективнее (при поддержке индексов). Например, представьте, что вы показываете твиты. Размер вашей страницы равен 20, и вы находитесь на странице 1000 и хотите загрузить страницу 1001.

Этот запрос

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

значительно менее эффективен, чем

db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(при условии, что у вас есть индекс на created_at).

Вы получаете идею: при загрузке страницы обратите внимание на метку времени последнего твита и используйте ее для запроса следующей страницы.