2016-05-19 6 views

答えて

0

Typescriptのthisクラスオブジェクトに対して関数を実行するのではなく、関数を直接呼び出すときに処理が時々無視されることがあります。代わりにあなたのルーターに

this._controller.findById` 

を渡すの

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

ありがとうございました。しかし、私には別の問題があります。プライベート_serviceをprotectedに変更すると、予期しないトークンなどのエラーが発生します。 'コンストラクタ、関数、アクセサまたは変数' なぜプライベートかパブリックは大丈夫か、保護されていないのですか? –

+0

@jeffreychan前と後で試していることのコードサンプルを表示できますか? Stack Overflowの方針に沿うためには、新しい質問として投稿し、コードサンプルをリンクするのではなくテキストに含めることをお勧めします。あなたがそれを作った後のコメントで、その質問に自由にリンクしてください。 – Paarth

0

@Paarthおかげで先端を渡してみてください。私はstackoverflowのための新鮮な手です。私はそれがどのように動作するのかわかりませんが、私は次回に気づくでしょう。ここ は、私のコードの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) 
} 

}

あなたは_modelがプライベートであり、CategoryRepositoryクラスはRepositoryBaseを拡張し、何とか私はCategoryRepositoryでアクセス_modelをしたいので、私が保護にプライベートに変更、それ見ることができるよう次のようなエラーが発生します。 typescript protected error info

それは私にとってとても奇妙です。

関連する問題