У меня есть mongodb и NodeJs. Соединение выполняется через mongoosejs.
Каков наилучший способ разработки ajax бесконечности прокрутки? Должен ли я использовать лимит и смещение?
Каков наилучший способ сделать ajax pagination с MongoDb и Nodejs?
Ответ 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
).
Вы получаете идею: при загрузке страницы обратите внимание на метку времени последнего твита и используйте ее для запроса следующей страницы.