Próbuję dodać/usunąć wpisy z bazy danych Firebase. Chcę je wymienić w tabeli do dodania/modyfikacji/usunięcia (front end), ale potrzebuję sposobu na jednoznaczną identyfikację każdego wpisu w celu modyfikacji/usunięcia. Firebase dodaje domyślnie unikalny identyfikator podczas korzystania z funkcji push(), ale nie widziałem żadnego odniesienia do tego, jak wybrać ten unikalny identyfikator w dokumentacji interfejsu API. Czy można to nawet zrobić? Czy zamiast tego powinienem używać set(), więc tworzę unikalny identyfikator?W Firebase przy użyciu funkcji push() Jak pobrać unikatowy identyfikator
Włożyłam ten krótki przykład razem używając ich samouczka:
<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>
Teraz pozwala zakładać, mam trzy rzędy danych:
fred : 1 : 1 : 1 : test message 1
fred : 1 : 1 : 1 : test message 2
fred : 1 : 1 : 1 : test message 3
Jak mogę iść o jednoznacznej identyfikacji Row 2?
w Bazie Firebase one wyglądać tak:
-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"
Zrobiłem coś, po prostu nie jestem pewien co ... Zwraca wartości, które wyglądają jak unikalne identyfikatory, ale są różne za każdym razem, gdy odświeżam stronę. Jako przykład -Iuy2dANtFBZ-OK7I-XK stanie się -Iuy2dAPFfOkgSy7bLFo następnie -Iuy2dAPFfOkgSy7bLFp. zmienia każdą linię za każdym razem, gdy odświeżam stronę. –
Nadal nie jestem pewien, dlaczego, ale coś w twoim przykładzie wygenerowało nowe nieprawidłowe klucze za każdym razem. Po pewnym kopaniu użyłem var message = snapshot.val(); message.id = snapshot.name() ;. Zaprowadziłeś mnie tam, jeśli chcesz zaktualizować swoją odpowiedź lub opracować, co mogło pójść nie tak, chętnie przyjmę twoją odpowiedź. –
Myślał, że chcesz uzyskać nazwę referencji, gdy naciskasz nowy czat (np. Naciśnięcie klawisza), w przeciwieństwie do ładowania wczytanych wcześniej czatów. Czy to ma sens? – bennlich