在Firebase中使用push()时如何提取唯一的ID [英] In Firebase when using push() How do I pull the unique ID

查看:134
本文介绍了在Firebase中使用push()时如何提取唯一的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从Firebase数据库中添加/删除条目。我想列出他们在表中添加/修改/删除(前端),但我需要一种方式来唯一标识每个条目,以修改/删除。使用push()时,Firebase默认会添加一个唯一的标识符,但是我没有看到任何引用如何在API文档中选择此唯一标识符的内容。这甚至可以完成?我应该使用set()来创建唯一的ID吗?



我已经把这个快速示例放在一起使用他们的教程:

 < div id ='messagesDiv'>< / div> 
< input type ='text'class =td-fieldid ='nameInput'placeholder ='Name'>
< input type ='text'class =td-fieldid ='messageInput'placeholder ='Message'>
< input type ='text'class =td-fieldid ='categoryInput'placeholder ='Category'>
< input type ='text'class =td-fieldid ='enabledInput'placeholder ='Enabled'>
< input type ='text'class =td-fieldid ='approvedInput'placeholder ='Approved'>
< input type ='Button'class =td-fieldid ='Submit'Value =Revoveonclick =msgRef.remove()>

< script>
var myDataRef =新的Firebase('https://unique.firebase.com/'); (b)
$ b $('。td-field')。keypress(function(e){
if(e.keyCode == 13){
var name = $(' ('#messageInput')。val();
var category = $('#categoryInput')。val();
val();
var approved = $('#approvedInput')。val();
myDataRef.push({name:name,text:text ,类别:category,enabled:enabled,approved:approved});
$('#messageInput').val('');
}
});
myDataRef.on('child_added',function(snapshot){
var message = snapshot.val();
displayChatMessage(message.name,message.text,message.category,message。启用,message.approved);
});
函数displayChatMessage(name,text,category,enabled,approved,){
$('< div />').text(text).prepend($('< em /> ;')。text(name +':'+ category +':'+ enabled +':'+ approved +':'))。appendTo($('#messagesDiv'));
$('#messagesDiv')[0] .scrollTop = $('#messagesDiv')[0] .scrollHeight;
};
< / script>

现在让我们假设我有三行数据:

  fred:1:1:1:test message 1 
fred:1:1:1:test message 2
fred:1:1:1 :测试消息3

我该如何去唯一识别第2行?在Firebase数据库中,b

如下所示:

  -DatabaseName 
-IuxeSuSiNy6xiahCXa0
批准:1
类别:1
启用:1
名称:Fred
文本:测试消息1
-IuxeTjwWOhV0lyEP5hf
批准:1
类别:1
启用:1
名称:Fred
文本:test message 2
-IuxeUWgBMTH4Xk9QADM
批准:1
类别:1
启用:1
名称:Fred
文本:test message 3


解决方案

e的快照(在这种情况下,由push()创建的ID)就像这样调用name():

pre $ var name = snapshot.name();

如果您想获取push()自动生成的名称,您可以在返回的引用上调用name(),如下所示:

  var newRef = myDataRef.push(...) 
var newID = newRef.name();






注意:
snapshot.name()已被弃用。查看其他答案。


I'm attempting to add/remove entries from a Firebase database. I want to list them in a table to be added/modified/removed (front end) but I need a way to uniquely identify each entry in order to modify/remove. Firebase adds a unique identifier by default when using push(), but I didn't see anything referencing how to select this unique identifier in the API documentation. Can this even be done? Should I be using set() instead so I'm creating the unique ID?

I've put this quick example together using their tutorial:

<div id='messagesDiv'></div>
<input type='text' class="td-field" id='nameInput' placeholder='Name'>
<input type='text' class="td-field" id='messageInput' placeholder='Message'>
<input type='text' class="td-field" id='categoryInput' placeholder='Category'>
<input type='text' class="td-field" id='enabledInput' placeholder='Enabled'>
<input type='text' class="td-field" id='approvedInput' placeholder='Approved'>
<input type='Button' class="td-field" id='Submit' Value="Revove" onclick="msgRef.remove()">

<script>
var myDataRef = new Firebase('https://unique.firebase.com/');

  $('.td-field').keypress(function (e) {
    if (e.keyCode == 13) {
      var name     = $('#nameInput').val();
      var text     = $('#messageInput').val();
      var category = $('#categoryInput').val();
      var enabled  = $('#enabledInput').val();
      var approved = $('#approvedInput').val();
      myDataRef.push({name: name, text: text, category: category, enabled: enabled, approved: approved });
      $('#messageInput').val('');
    }
  });
  myDataRef.on('child_added', function(snapshot) {
    var message = snapshot.val();
    displayChatMessage(message.name, message.text, message.category, message.enabled, message.approved);
  });
  function displayChatMessage(name, text, category, enabled, approved, ) {
    $('<div/>').text(text).prepend($('<em/>').text(name+' : '+category +' : '+enabled +' : '+approved+ ' : ' )).appendTo($('#messagesDiv'));
    $('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
  };
</script>

Now lets assume I have three rows of data:

fred : 1 : 1 : 1 : test message 1
fred : 1 : 1 : 1 : test message 2
fred : 1 : 1 : 1 : test message 3

How do I go about uniquely identifying row 2?

in the Firebase Database they look like this:

-DatabaseName
    -IuxeSuSiNy6xiahCXa0
        approved: "1"
        category: "1"
        enabled: "1"
        name: "Fred"
        text: "test message 1"
    -IuxeTjwWOhV0lyEP5hf
        approved: "1"
        category: "1"
        enabled: "1"
        name: "Fred"
        text: "test message 2"
    -IuxeUWgBMTH4Xk9QADM
        approved: "1"
        category: "1"
        enabled: "1"
        name: "Fred"
        text: "test message 3"

解决方案

To get the "name" of any snapshot (in this case, the ID created by push()) just call name() like this:

var name = snapshot.name();

If you want to get the name that has been auto-generated by push(), you can just call name() on the returned reference, like so:

var newRef = myDataRef.push(...);
var newID = newRef.name();


NOTE: snapshot.name() has been deprecated. See other answers.

这篇关于在Firebase中使用push()时如何提取唯一的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆