如何使用Rails从Firebase中分页数据?

时间:2017-11-08 13:38:53

标签: ruby-on-rails ruby firebase pagination

随着应用程序变大,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

1 个答案:

答案 0 :(得分:0)

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

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])
  

或者,使用明确的&#34;每页&#34;限制:

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

在视图中呈现页面链接:

<%= will_paginate @posts %>
  

那就是它!你完成了。您只需添加一些CSS样式即可使这些分页链接更漂亮。   您可以自定义默认&#34; per_page&#34;值:

     

用于Post模型

class Post
  self.per_page = 10
end
  

全局设置per_page

WillPaginate.per_page = 10