Ceci est mon fichier publish.js
dans lequel je publie ma collection:Trier et limite ne fonctionne pas avec Mongo + Meteor
const tags = Tags.find({title: {
$regex: `.*${searchString}.*`,
$options: 'i'
}}, {
sort: { counts: -1 }, limit: 3
});
console.log(tags.count());
return tags;
Et voici mes composants qui abonnent à cette collection:
this.tagsSubscription = this.subscribe('tags',() => [this.tag], function (err) {
that.tags = Tags.find().fetch();
});
Donc, avec cela, je reçois 2 erreurs différentes:
le tri et la limite ne fonctionnent pas: parfois g et plus de 3 résultats et il n'y a pas trié par 'nombre'
le rappel ne fonctionne pas correctement. C'est trop rapide, j'ai des résultats différents sur le client et le serveur. J'ai essayé de cette façon,
onSuccess()
et avecMeteor.autorun()
mais sans chance. Si j'utilise unsetTimeout
je peux voir le curseur correct
La recherche de titre est la seule chose qui semble fonctionner.
1- Intéressant, merci de clarifier. Je vois maintenant la sortie correcte sur le serveur MAIS si j'envoie une chaîne vide le client affiche 4 résultats (le serveur juste 3). Peut-être lié à un problème de rappel? 2- Oui, comme indiqué ci-dessus cela fonctionne.J'envoie "this.tag" qui est une chaîne (searchString sur le serveur). J'ai essayé le vôtre mais j'ai cette erreur: "Erreur: l'argument 2 doit être une fonction" (mais ne vous inquiétez pas à ce sujet) 3- Wow, j'ai copié cette information à partir de la documentation angulaire-météore: S Tri sur le client mais ne fonctionne pas. Ce n'est pas un gros problème, car je peux le trier avec AngularJS –
Je ne comprends pas vraiment ceci: "C'est une raison très importante pour laquelle vous devriez toujours aller chercher les mêmes données que vous avez souscrites (ne pas" sur- chercher ")." Que signifie avec "les mêmes données". N'est-ce pas toujours la même chose? Certainement les problèmes que j'ai avec la taille du curseur sur le client est lié à cela. Je vais vous donner une solution de contournement –
Je soupçonne que votre collection côté client n'est pas effacée lorsque vous vous réabonnez avec différents arguments, de sorte que vous pouvez également ajouter le filtrage au côté client, ainsi que le tri/la limitation. De cette façon, il devrait fonctionner sans problèmes. – Styx