如何在Firebase Ruby REST包装器中获取推送值键

时间:2018-11-27 05:48:53

标签: ruby-on-rails firebase

我正在做一个项目,以便对Firebase进行CRUD操作。我利用this来帮助简化红宝石项目并将其链接到Firebase。

功能:

def delete_firebase(event_params,rootpath="Events/")
  query = init_firebase.delete(rootpath,event_params)
end

def new_firebase(event_params,rootpath="Events")
  query = init_firebase.push(rootpath,event_params)
end

def init_firebase # Inits firebase project with URL and secret
  firebaseURL = "myfirebaseprojecturl"
  firebaseSecret = "myfirebasesecret"
  firebase = Firebase::Client.new(firebaseURL, firebaseSecret)
end

事件参数由我的事件参数组成,如下所示

def event_params
  params.require(:event).permit(:eventID, :eventName, :attachment, :eventNoOfPpl, :eventAdminEmail, {eventpics: []})
end

我遇到了一个问题。当我将push()推入firebase时,有一个随机密钥,例如-LSFOklvcdmfPOWrxgBo。在这种情况下,文档的结构将如下所示:


但是我无法从-LSFOklvcdmfPOWrxgBo中删除任何内容,因为我没有该值。我使用了来自奥斯卡的firebase-ruby gem的delete()。对于此问题的任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我重新阅读了gem文档,并从我的朋友那里得到了一些帮助,并提出了两种解决方案

  1. 尸体的回应中有response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" },因此,您可以根据需要找出姓名
  2. 更改索引,不使用.push,而是使用.set并为每个事件都随机编号

最终解决方案

  def load_firebase(root_path = "Events")
    firebase_json = init_firebase.get(root_path)
    if valid_json?(firebase_json.raw_body)
      @json_object = JSON.parse(firebase_json.raw_body)
    end
  end

  def update_firebase(event_params, root_path = "Events/")
    init_firebase.update("#{root_path}#{event_params["eventID"]}", event_params)
  end

  def delete_firebase(event_params, root_path = "Events/")
    init_firebase.delete("#{root_path}#{event_params["eventID"]}")
  end

  def save_firebase(event_params, root_path = "Events/")
    init_firebase.set("#{root_path}#{event_params["eventID"]}", event_params)
  end