つまりね:
- クライアントは、リポジトリによって使用される永続化メカニズムを認識すべきではありません
- たとえば、永続ストアとして MongoDB を使用してリポジトリを実装する場合、値の取得は async-callbacks を介して行われます
- 同期呼び出しはコールバックを使用して実装できますが、非同期呼び出しはコールバックを使用して実装する必要があります。(または先物などですが、行きたくないです)
私にとっては、実装がたまたま同期していても、リポジトリ(少なくともフェッチの場合)はインターフェースでコールバックを定義する必要があることを意味します。
var repo = {
cache: {},
getById: function(id,callback){
callback(null,this.cache[id]);
}
}
これをすぐに次のように変更する可能性があるため、次のようにします。
var repo = {
getById: function(id,callback){
mongoose.findOne({_id:id},callback);
}
}
IMHO、C / U / Dの場合、主に永続レイヤーからのエラーレポートに対して同じ必要性が生じます。
要するに:非同期コールバックを使用してリポジトリを定義することをベストプラクティスと考えていますか?