2016-08-21 20 views
5

Witam Pracuję nad projektem firebase i mogę zapisać moje dane za pośrednictwem javascript w bazie danych firebase. Ale nie mogłem wymyślić, aby automatycznie zwiększyć wartość potomną (moja wartość dla dziecka to duyuru, możesz zobaczyć szczegóły w poniższej części) mojej bazy danych. Udostępniam mój kod poniżej, możesz dać mi wskazówki, jak rozwiązać ten problem.Automatyczne zwiększanie wartości w bazie ogniowej za pomocą javascript

<script> 

     // Initialize Firebase 
     var config = { 
     apiKey: "sample1", 
     authDomain: "sample2", 
     databaseURL: "sample3", 
     storageBucket: "sample4", 
     }; 


     firebase.initializeApp(config); 
     var database = firebase.database(); 

    firebase.initializeApp(config); 
    var database = firebase.database(); 

    function writeUserData(userId, name, email, imageUrl) { 
    var kategori1 = document.getElementById("kategori").value; 
    var duyuru1 = document.getElementById("duyuru").value; 
    var name1 = document.getElementById("name").value; 
    var email1 = document.getElementById("email").value; 
    var imageUrl1 = document.getElementById("imageUrl").value; 





    firebase.database().ref(kategori1 +"/" + duyuru1).set({ 
    username: name1, 
    email: email1, 
    profile_picture : imageUrl1 
    }); 
} 

    </script> 

a poza tym jest jak

{ 
    "duyuru1": { 
     "email": "kjfdlkl", 
     "profile_picture": "dsfsd", 
     "username": "meraha" 
    } 
} 

chcę danych wyjściowych, takich jak;

{ 
    "duyuru1": { 
     "email": "kjfdlkl", 
     "profile_picture": "dsfsd", 
     "username": "meraha" 
    }, 

    "duyuru2": { 
     "email": "kjfdlkl", 
     "profile_picture": "dsfsd", 
     "username": "meraha" 
    } 
} 

Sekcja duyuru (wartość podrzędna) powinna być automatyczna inkrementacja, o to właśnie chciałem. Dziękujemy za odpowiedzi

Odpowiedz

8

Firebase nie ma kluczy automatycznych, ponieważ nie działają one dobrze w systemach masowo wielu użytkowników, gdzie klienci mogą być offline przez dłuższy czas.

Zamiast tego Firebase ma własny rodzaj automatycznie generowanych kluczy nazywanych identyfikatorami Push. Te identyfikatory wypychania mają te same ważne właściwości sekwencji w wielu relacyjnych bazach danych: są uporządkowane i sekwencyjne. Ale dodatkowo można je obliczyć po stronie klienta, nawet jeśli klient nie jest połączony z serwerami Firebase.

Zobacz Firebase documentation on saving data in lists, to dziedzictwo blog post on why arrays don't work well in Firebase i to post on how push ids work.

+0

Dziękuję za odpowiedź na moje pytanie. Ale chcę cię o coś zapytać, gdy używam tej metody, to stworzyłem losowe klucze, właśnie zastanawiam się, czy istnieje jakikolwiek sposób, aby utworzyć niestandardowy przyrost z javascript. Podobnie jak wtedy, gdy użytkownicy automatycznie dodają dane do zwiększonych danych. Na przykład dla pierwszego postu duyuru1, drugiego postu duyuru2, itd. –

+0

Numer ten na końcu wydaje się być indeksem tablicy, a zatem nie będzie skalowany. Podane przeze mnie linki wyjaśniają powody lepiej niż ja tutaj. Jeśli nalegasz na używanie niestandardowych sekwencji, będziesz musiał je zaimplementować samodzielnie. Firebase nie ma dla nich wbudowanej obsługi. –

+0

Tak, zgodnie z linkiem, że dałeś mi lepszą pracę z tą domyślną właściwością, dziękuję. Twoja odpowiedź pozwala mi jeszcze raz spojrzeć na moją aplikację. Miłego dnia –