【问题标题】:Accessing Firebase push() child访问 Firebase push() 子
【发布时间】:2015-11-21 04:44:54
【问题描述】:

我正在慢慢进入 Firebase,但有一个可能是愚蠢的问题。如果我使用 push() 将子项添加到引用中,如果我不保存生成的推送 ID,如何检索/删除它们?

例如,取这个根:

var ref = https://myaccount.firebaseio.com/player

如果我给 /player 写一个新条目:

var new_player= ref.push({
    name:"User",
    country:"United States"
  })

Firebase 会为此生成一个推送 ID:

https://myaccount.firebaseio.com/player/-JxgQCQsSLU0dQuwX0j-

其中包含我推送的信息。现在假设我要检索或删除该播放器?我应该使用 .key() 和 .set() 将生成的 ID 存储为自身的子项吗?:

//this will get -JxgQCQsSLU0dQuwX0j-
var _newPlayerKey = new_player.key(); 


//updates the record I just created
var update_player = ref.set({
    name:"User",
    country:"United States",
    ref: _newPlayerKey
  })

我不知道如何通过生成的 ID 访问该对象...有没有更好的方法来设置它?

【问题讨论】:

  • 作为键访问记录 (child()) 的替代方法,您可以使用 Firebase 查询:firebase.com/docs/web/guide/…
  • 如果有部分路径未知,如何查询?例如,我可以通过查询订购,但不调用 .key() 我不知道要进入哪条路径......我并不是说这是粗鲁的,我是在诚实地问:)
  • 根据用户名获取用户:new Firebase('https://myaccount.firebaseio.com/player/').orderByChild('name').equalTo('User').on(...。但是将密钥作为命名属性存储在同一个对象中是没有意义的。然后你可以做new Firebase('https://myaccount.firebaseio.com/player/').child(key)

标签: javascript firebase firebase-realtime-database


【解决方案1】:

为什么你这样做不能使用 key() 方法,它应该在几乎所有情况下都足够了,即

playersRef.limit(10).on('child_added', function (snapshot) {    
   var player = "<p>"+ snapshot.val().name +" <button data-value='"+snapshot.key()+"'>Delete</button></p>";      
   $(player).appendTo($('#messagesDiv'));      
});

【讨论】:

  • 我对非关系数据库很陌生,所以这对我来说似乎是一个奇怪的概念......如果这是一种公认​​的做法,我很乐意这样做:) 感谢您的反馈!!!
猜你喜欢
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2019-01-11
  • 2017-10-17
  • 2017-01-30
相关资源
最近更新 更多