ruby - MongoDB 地理空间在 HTTP 请求之间加载更多

标签 ruby mongodb sinatra geospatial

AcaniUsers 从我的 iPhone 加载离我最近的 MongoDB 中的前 20 个用户(通过 Sinatra 在 Heroku 上)。我想添加一个“加载更多”按钮,用于加载离我最近的 20 个用户。请记住,我的位置和我手机上用户的位置可能已经改变。我正在考虑从 Sinatra 切换到 Node.js 并打开一个 WebSocket,这样我就可以在我的手机上实时更新用户的存在和位置,但我认为我应该把这个挑战留到下一次迭代。基本上,我应该如何实现加载更多功能?

最佳答案

要在 MongoDB 中对查询进行分页,您可以结合使用 limit() 和 skip()。

因此,第一个查询将是:

your_query.limit(20)

然后如果你想加载第二个 20(你将不得不在某处记住第一个查询):

your_query.skip(20).limit(20)

顺便说一句,我建议您首先执行限制高于 20 的查询,并将您不显示的结果放入缓存中。当请求时,只需从缓存中获取它们(您可以将其存储在用户 session 中)。如果位置发生变化,从头开始并重新查询使缓存无效的数据库。

关于ruby - MongoDB 地理空间在 HTTP 请求之间加载更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755535/

相关文章:

ruby - 如何测试其中包含 gets.chomp 的函数?

ruby-on-rails - 生产中 wkhtmltopdf-binary gem 的问题

ruby-on-rails - 在 Ruby 中编译 Assets 是否需要在部署时完成?为什么之前不呢?

performance - 尽管设置了索引,但简单的 MongoDB 查询非常慢

python - 无法将命令的输出重定向到输出文件

ruby - 为什么这段代码没有达到我的预期

java - Gradle 依赖项在 IntelliJ 中不起作用

ruby-on-rails - 如何解决 'column identifier is not unique' ?

ruby - 使用 Pony 从简单的 Sinatra 应用程序发送电子邮件

javascript - 在 Sinatra 中执行 Javascript