2014-12-09 13 views
5

Data la seguente struttura dei dati:Combinando orderByChild e equalTo in Firebase interroga

{ 
    "comments" : { 
    "-JcBbk64Gpm1SKoFHv8b" : { 
     "content" : "blah", 
     "createdAt" : 1417550954985, 
     "link" : "http%3A%2F%2Flocalhost%3A3000%2F", 
     "recommendedCount" : 0, 
     "replies" : { 
     "-JcBbk8gF_nQ_vjwag61" : true 
     }, 
     "replyCount" : 1 
    }, 
    "-JcBbk8gF_nQ_vjwag61" : { 
     "content" : "blah blah", 
     "createdAt" : 1417550955151, 
     "link" : "http%3A%2F%2Flocalhost%3A3000%2F", 
     "recommendedCount" : 0, 
     "replyCount" : 1, 
     "replyToComment" : "-JcBbk64Gpm1SKoFHv8b" 
    } 
    }, 
    "links" : { 
    "http%3A%2F%2Flocalhost%3A3000%2F" : { 
     "author" : 5, 
     "commentCount" : 2, 
     "comments" : { 
     "-JcBbk64Gpm1SKoFHv8b" : true, 
     "-JcBbk8gF_nQ_vjwag61" : true 
     }, 
     "createdAt" : 1417550954931, 
     "ratingCount" : 2, 
     "recommendedCount" : 32, 
     "score" : 91, 
     "title" : "A Christian vs. an Atheist: Round 2", 
     "url" : "http://localhost:3000/" 
    } 
    } 
} 

vorrei recuperare tutti i commenti per un determinato link e ordinarli in ordine cronologico inverso. Ho ottenuto fino a questo punto, ma non riesco a capire come fare il tipo inverso perché ho già usato orderByChild per restringere i risultati per link:

ref.orderByChild('link').equalTo(currentLink).on('value', function (snap) { 
    console.log(snapshot.val()); 
}); 

Se chiamo orderByChild() un secondo momento come questo:

ref.orderByChild('link').equalTo(currentLink).orderByChild('createdAt').on('value', function (snap) { 
    console.log(snapshot.val()); 
}); 

non riesce con questo messaggio di errore:

Uncaught Error: Query.orderByChild: You can't combine multiple orderBy calls.

stumped. Eventuali suggerimenti?

+0

L'ordine di chiamataPer più volte in una query non è supportato. Dovresti ottenere un messaggio di errore piuttosto esplicito quando lo provi. Si prega di imparare a mettere tali messaggi di errore nella tua domanda, perché "fallisce" è piuttosto generico. –

+0

@FrankvanPuffelen Sto cercando di capire come "recuperare tutti i commenti per un determinato collegamento e ordinarli in ordine cronologico inverso". Mi rendo conto che il modo in cui sto facendo non funzionerà. Sto cercando di capire un modo per farlo che funzionerà. – cayblood

risposta

1

Ho riscontrato gli stessi problemi nel mio progetto Firebase e l'ho risolto in questo modo. Si prega di dare un'occhiata.

var formRef = firebase.child('links').child(currentLink); 
formRef.orderByChild('createdAt').on('value', function (snap) { 
    console.log(snapshot.val()); 
}); 

Funzionerà. I migliori saluti.

Problemi correlati