Utilizzo di Meteor, mi piacerebbe capire il modo più efficiente per utilizzare il completamento automatico dell'interfaccia utente di JQuery con grandi volumi di dati sul lato server.Modo canonico per utilizzare il completamento automatico di JQueryUI con Meteor
Ho due proposte di lavoro e vorrei avere opinioni sulle differenze e se ci sono modi migliori per fare la stessa cosa.
Utilizzando 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
}
});
};
Uso delle funzioni remote (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
}
});
};
Il che, se uno dei due, è il modo più efficiente per installare un completamento automatico sul lato server usando Meteor con un grande set di dati?
Io non sono di gran lunga esperto di Meteor (vedi i miei numerosi post qui per chiedere aiuto), ma sembra sbagliato che tu stia facendo pub/sub e che abbia un metodo per ottenere Dati. Non sono sicuro del motivo per cui avresti bisogno di entrambi. – CodeChimp
@CodeChimp Sì, lo so ... Ho anche funzionato usando puro pub/sub - aggiornerò la domanda per renderla più chiara. Immagino che cosa dovrei davvero chiedere è: sta iniziando e fermando un nuovo sottotitolo in ogni nuovo evento di ricerca il modo più performante per farlo? –
Ancora, nessun esperto, ma penso che l'interruzione di un abbonamento significhi semplicemente che non ascolti più i cambiamenti dall'editore. Qualcuno con più esperienza di Meteor, per favore, parla se sono lontano da qui. Se sono corretto nella mia affermazione, penso che il successo della performance sarebbe continuo aggiornamenti nel tempo (per non annullare la sottoscrizione) VS. un possibile maggior successo quando si sottoscrive quando necessario. Penso che il futuro potrebbe essere attenuato restringendo il campo di applicazione della pubblicazione, che sembra si stia facendo. – CodeChimp