2017-10-17 6 views
0

J'utilise Firebase comme suit:Firebase réinitialiser la clé

Post-- 

    -Kwc6asRRI1SUqrigYeD     <- First input 
         -> Date: 1:00pm 
         -> ID: 1 
         -> Content: Hello! 
    -Kwc6fXQsN2xIQtHOofZ 
         -> Date: 2:00pm 
         -> ID: 2 
         -> Content: How are you? 
    -Kwc6fXQsN2xRO39LDPD     <-Most recent one 
         -> Date: 3:00pm 
         -> ID: 3 
         -> Content: I am good. 

Ceux-ci sont « poussés » donc une clé unique est généré qui peut être utilisé pour les afficher en fonction du "most recent to old" (ou ID:3 à ID:1).

Maintenant, quand je dois mettre à jour un ensemble de données, laissez-dire le contenu de poste ID:1"Hello"-"My name is Steve", il maintient toujours la clé unique, même si c'est le plus récent.

Post-- 

    -Kwc6asRRI1SUqrigYeD     <-Most recent one 
         -> Date: 4:00pm 
         -> ID: 1 
         -> Content: My name is Steve 
    -Kwc6fXQsN2xIQtHOofZ 
         -> Date: 2:00pm 
         -> ID: 2 
         -> Content: How are you? 
    -Kwc6fXQsN2xRO39LDPD     
         -> Date: 3:00pm 
         -> ID: 3 
         -> Content: I am good. 

Je suppose que je peux supprimer le poste et définir un nouveau, mais qui semble inefficace surtout si j'ai plus de données sur chaque enfant.

Existe-t-il un moyen de réinitialiser la touche afin qu'elle reflète le changement d'heure (comme ci-dessous)?

Post-- 

    -Kwc6fXQsN2xIQtHOofZ 
         -> Date: 2:00pm 
         -> ID: 2 
         -> Content: How are you? 
    -Kwc6fXQsN2xRO39LDPD     
         -> Date: 3:00pm 
         -> ID: 3 
         -> Content: I am good. 

    -Kwc6asRRI1KDodkeixk    <-Most recent one 
         -> Date: 4:00pm 
         -> ID: 1 
         -> Content: My name is Steve 

Répondre

2

Il n'y a aucun moyen de mettre à jour la clé d'un nœud existant (voir 1, 2, 3). Si vous voulez une nouvelle clé, vous devrez générer un nouveau noeud avec le même contenu.

Mais dans ce cas, il semble beaucoup plus probable que vous voulez garder votre structure de données est et au lieu d'ajouter un horodatage lastUpdated à chaque poste:

Post-- 
    -Kwc6asRRI1SUqrigYeD 
        -> Date: 1:00pm 
        -> lastUpdated: 1508215054096 
        -> ID: 1 
        -> Content: Hello! 
    -Kwc6fXQsN2xIQtHOofZ 
        -> Date: 2:00pm 
        -> lastUpdated: 1507610306270 
        -> ID: 2 
        -> Content: How are you? 
    -Kwc6fXQsN2xRO39LDPD 
        -> Date: 3:00pm 
        -> lastUpdated: 1508128668412 
        -> ID: 3 
        -> Content: I am good. 

Avec cette structure, vous pouvez utiliser une requête Firebase à obtenir les résultats dans l'ordre que vous voulez. En JavaScript, cela ressemblerait à quelque chose comme:

var ref = firebase.database().reference("Post"); 
ref.orderByChild("lastUpdated") 
    .once("value") 
    .then(function(snapshot) { 
    snapshot.forEach(function(post) { 
     console.log(snapshot.key+": "+snapshot.val().Content); 
    }); 
    }); 
+0

Merci Frank! Très appréciée. –