我正在做一个项目,以便对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()
。对于此问题的任何帮助,我们将不胜感激。
答案 0 :(得分:0)
我重新阅读了gem文档,并从我的朋友那里得到了一些帮助,并提出了两种解决方案
response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" }
,因此,您可以根据需要找出姓名.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