【问题标题】:How do I paginate data from Firebase using Rails?如何使用 Rails 对来自 Firebase 的数据进行分页?
【发布时间】:2017-11-09 22:40:09
【问题描述】:

随着应用程序变得越来越大,Firebase 中的数据也会越来越大。我在Ruby on Rails 中有一个应用程序,它将所有数据存储在Firebase 中。为了显示所有数据,我只是从 url 数据中加载为JSON 并将其显示在视图上。现在它加载数据非常缓慢,因为它会下载整个JSON

有没有办法让 firebase 对所有数据进行分页并优化负载?

这是我加载数据的方式:

    url = URI("******************")

    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE

    request = Net::HTTP::Get.new(url)
    request["cache-control"] = 'no-cache'
    request["postman-token"] = 'efe418a4-1dcc-335b-28c9-ba72cc2f5aa0'

    response = http.request(request)
    all_letters = JSON.parse(response.read_body)
    im = 1
    all_letters.each do |item|
        ...
    end

【问题讨论】:

  • 你能提供一些代码示例吗?就像控制器方法一样,您可以在其中加载数据并将其传递给视图
  • @AntonTkachov 添加了控制器
  • 我看到你对 Rails 的体验很差。这样的代码库是不可维护的....您需要向 load_articles 提供一个页面参数,然后在您的请求中使用它来火力库(不确定确切的语法)。我还没有准备好进入你的代码来研究或提供一个真实的样本。它太大了,令人毛骨悚然。
  • 为什么在 Rails 应用程序中使用 firebase?你为什么不使用 sqlite/mysql/postgresql?
  • 您好,请问如何帮助您解决此问题?我读了你的帖子,但我需要更深入地挖掘来帮助你

标签: ruby-on-rails ruby firebase pagination


【解决方案1】:

如果我必须这样做,我会首先轻松地 get 使用 firebase-ruby gem 来自 firebase 的页面

base_uri = 'https://<your-firebase>.firebaseio.com/'

firebase = Firebase::Client.new(base_uri)

response = firebase.push("todos", { :name => 'Pick the milk', :'.priority' => 1 })
response.success? # => true
response.code # => 200
response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" }
response.raw_body # => '{"name":"-INOQPH-aV_psbk3ZXEX"}'

然后要在页面上显示它们,我会安装will_paginate

Basic will_paginate use

执行分页查询:

@posts = Post.paginate(:page => params[:page])

或者,使用明确的“每页”限制:

Post.paginate(:page => params[:page], :per_page => 30)

在视图中渲染页面链接:

<%= will_paginate @posts %>

就是这样!你完成了。你只需要添加一些 CSS 样式来使这些分页链接更漂亮。 您可以自定义默认的“per_page”值:

对于 Post 模型

class Post
  self.per_page = 10
end

全局设置 per_page

WillPaginate.per_page = 10

【讨论】:

  • 所以,我需要首先从我的火力库中加载所有数据,然后再显示?每当页面加载时都应该这样做?因为它应该实时工作
  • @AliTlekbay 有多慢?包括您的服务器日志
  • 嗯,它并没有那么慢,但我预计未来它会更慢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2015-05-19
  • 2021-09-02
  • 2019-06-09
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多