Korzystając z Meteor, chciałbym poznać najbardziej efektywny sposób korzystania z autouzupełniania interfejsu użytkownika JQuery z dużymi wolumenami danych po stronie serwera.Kanoniczny sposób korzystania z autouzupełniania JQueryUI z Meteorem
Mam dwie propozycje robocze i chciałbym usłyszeć opinie na temat różnic i czy istnieją lepsze sposoby na zrobienie tego samego.
Korzystanie pub/sub:
// Server
Meteor.publish("autocompleteData", function (theSearchTerm) {
var query = {
name: { $regex: theSearchTerm, $options: 'i'}
};
return MyData.find(query, options);
});
// Client
Template.myTemplate.rendered = function() {
initAutocomplete($(this.find('.my.autocomplete')));
};
var initAutocomplete = function(element){
element.customAutocomplete({
source: function(request, callback){
var sub = Meteor.subscribe('autocompleteData', request.term, function(){
var results = MyData.find({}, {limit: 50}).fetch();
sub.stop();
callback(results);
});
},
select: function(event, ui){
// Do stuff with selected value
}
});
};
Korzystanie ze zdalnych funkcje (Meteor.Methods):
// Server
Meteor.methods({
getData: function(theSearchTerm) {
var query = {
name: { $regex: theSearchTerm, $options: 'i'}
};
return MyData.find(query, {limit: 50}).fetch();
});
});
// Client
Template.myTemplate.rendered = function() {
initAutocomplete($(this.find('.my.autocomplete')));
};
var initAutocomplete = function(element){
element.customAutocomplete({
source: function(request, callback){
Meteor.call('getData', request.term, function(err, results){
callback(results);
});
},
select: function(event, ui){
// Do stuff with selected value
}
});
};
Które, jeśli obaj, jest to najbardziej efektywny sposób skonfigurować autouzupełniania server-side używając Meteera z dużym zestawem danych?
Nie jestem zdecydowanie ekspertem od Meteor (zobacz moje wiele postów tutaj proszących o pomoc), ale wydaje się, że robisz pub/sub i masz metodę getData. Nie wiem, dlaczego potrzebujesz obu. – CodeChimp
@CodeChimp Tak, wiem ... Mam również działający przy użyciu czystej pub/sub - zaktualizuję pytanie, aby było bardziej zrozumiałe. Domyślam się, że naprawdę powinienem pytać: czy uruchamianie i zatrzymywanie nowego sub w każdym nowym wyszukiwaniu jest najbardziej wydajnym sposobem na zrobienie tego? –
Znów nie ma eksperta, ale myślę, że zatrzymanie subskrypcji oznacza po prostu, że nie słuchasz już zmian od wydawcy. Ktoś, kto ma więcej doświadczenia z Meteorytem, powinien się odezwać, jeśli znajdę się poza bazą. Jeśli mam rację w swoim oświadczeniu, myślę, że hitem wydajności byłaby ciągła aktualizacja w czasie (aby nie anulować subskrypcji). możliwe większe trafienie podczas subskrybowania w razie potrzeby. Myślę, że później można złagodzić zawężając zakres publikacji, co wydaje się, że robisz. – CodeChimp