2016-05-19 16 views

Antwort

0

Die Behandlung von Typoskripten this wird manchmal ignoriert, wenn Funktionen direkt aufgerufen werden, anstatt sie auf dem Klassenobjekt auszuführen. Statt vorbei

this._controller.findById` 

an Ihren Router versuchen vorbei

this._controller.findById.bind(this) 
+0

danke, es funktioniert jetzt. Aber ich habe ein anderes Problem. Wenn ich den privaten _service in "protected" ändere, verursacht "gulp" einen Fehler, wie "Unexpected token"; 'Konstruktor, Funktion, Accessor oder Variable' Warum privat oder öffentlich ist in Ordnung, nicht geschützt? –

+0

@jeffreychan können Sie ein Codebeispiel zeigen, was Sie mit einem Vorher und Nachher versuchen? Um den Richtlinien von Stack Overflow gerecht zu werden, würde ich empfehlen, es als neue Frage zu veröffentlichen und Codebeispiele in den Text einzubinden, anstatt sie zu verlinken. Fühlen Sie sich frei, diese Frage in einem Kommentar hier zu verlinken, nachdem Sie es gemacht haben. – Paarth

0

@Paarth dank der Spitze. Ich bin eine frische Hand für stackoverflow. Ich weiß nicht, wie es funktioniert, aber ich werde das nächste Mal bemerkt werden. hier ist mein Code sameples:

class RepositoryBase<T extends IEnityModel> { 

private _model: mongoose.Model<mongoose.Document>; 

constructor(schemaModel: mongoose.Model<mongoose.Document>) { 
    this._model = schemaModel; 
} 

create(item: T, callback: (error: any, result: any) => void) { 
    this._model.create(item, callback); 

} 

retrieve(callback: (error: any, result: any) => void) { 
    this._model.find({}, callback) 
} 

update(id: string, item: T, callback: (error: any, result: any) => void) { 
    this._model.update({ _id: this.toObjectId(id) }, item, callback); 

} 

remove(id: string, callback: (error: any, result: any) => void) { 
    this._model.remove({ _id: this.toObjectId(id) }, (err) => callback(err, null)); 
} 

findById(id: string, callback: (error: any, result: T) => void) { 
    this._model.findById(id, callback); 
} 


private toObjectId(id: string): mongoose.Types.ObjectId { 
    return new mongoose.Types.ObjectId(id) 
} 

}

wie Sie _model ist privat, und CategoryRepository Klasse erweitert RepositoryBase sehen können, irgendwie möchte ich Zugang _model in CategoryRepository, so dass ich ändern zu geschützten privaten, aber es wird Fehler wie folgt verursachen: typescript protected error info

es ist so seltsam für mich.

Verwandte Themen