2013-03-19 9 views

risposta

6

this.error è disponibile solo all'interno del metodo di pubblicazione. Per the docs:

Interrompe sottoscrizione di questo client, innescando una chiamata sul client al onError callback passato a Meteor.subscribe, se del caso. Se l'errore non è un Meteor.Error, verrà mappato su Meteor.Error(500, "Internal server error").

Lanciare un Meteor.Error non interrompe l'abbonamento del client, si limiterebbe a terminare l'esecuzione e aumentare l'eccezione. Quindi, se vuoi assicurarti che Meteor si ripulisca dopo di te e ti permetta di gestire l'errore sul client quando succede qualcosa di inaspettato, ti consigliamo di usare this.error piuttosto che buttarlo nel metodo di pubblicazione.

2

Sembra che siano uguali. Nel codice sorgente:

try { 
    var res = self._handler.apply(self, EJSON.clone(self._params)); 
} catch (e) { 
    self.error(e); 
    return; 
} 

Quindi, se c'è un eccezione generata, error è chiamato comunque. error interrompe anche l'abbonamento.

Problemi correlati