J'espère qu'une question relativement simple ici avec l'utilisation de Firestore querysCréation d'une requête chronologique dans Firestore, peut-être Bug?
J'essaie de créer essentiellement un fil de nouvelles, en triant le contenu le plus récent à partir du contenu le plus ancien. Cette partie est assez facile, j'utilise:
var first = db.collection("feeds/0/active").orderBy("timestamp", "desc").limit(3);
Qui récupère les 3 nouvelles entrées dans le fil de nouvelles. Mon idée est alors dans la prochaine requête, pour tirer vers le bas les 3 prochains éléments dans le flux. Donc, si nous allons par l'âge, 4,5,6 dans la collection en termes de la façon dont les nouveaux articles sont.
Pour ce faire, je prends le dernier élément dans la requête un, et utilisez l'horodatage de ce noeud comme mon départ à la valeur dans la requête 2:
var first = db.collection("feeds/0/active").orderBy("timestamp", "desc").limit(3);
first.get().then(function (documentSnapshots) {
// Get the last visible document
var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
var next = db.collection("feeds/0/active").orderBy("timestamp", "desc").startAt(lastVisible.data().timestamp).limit(3);
next.get().then(function(docSn){
console.log("SECOND QUERY!")
docSn.forEach(function(doc) {
console.log(doc.data().message)
})
})
Le résultat de ce code renvoie le même que les premiers retours de la requête , les nœuds 1, 2, 3 en dépit d'essayer de dire la deuxième requête pour commencer à node3
J'ai aussi essayé passer dans un objet javascript à la place:
var datevalue = Date.parse(lastVisible.data().timestamp)
var next = db.collection("feeds/0/active").orderBy("timestamp", "desc").startAt(datevalue).limit(3);
qui a également Malheureusement, les nouvea n'a pas fonctionné. J'ai également essayé de passer dans l'ensemble de l'élément d'instantané, et j'ai obtenu l'erreur "Appels malforormés de JS: les tailles de champs sont différentes: [[9,38,38,38], [0,0,1,0], etc .. "
Pas vraiment idée par où commencer avec cela comme j'ai lu les documents et tous les exemples et je pourrais trouver et ne peux pas le comprendre. La seule autre façon que je peux penser à mettre en œuvre ceci est en utilisant une fonction Cloud pour numéroter chaque nœud lors de la création .. mais cela semble hacky
Toute aide serait énorme! Merci
toute idée qui que ce soit? – joe