在Firebase中使用push()时如何提取唯一的ID [英] In Firebase when using push() How do I pull the unique 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屋!