コントローラー/サービス スクリプトがなければ、実際には単一責任の原則を満たすことはできません。これは、私があなただったら実装する高レベルの設計です。
FileRepository
ファイルを取得するメソッドを公開する必要があります。名前をGetFileByIdにしましょう。
CRUD 操作のMongoDBRepositoryメソッド。SelectById 、SelectByQuery、Update、Create、Deleteなど。
オブジェクト作成ロジックcreateNewObj
ロジックが単純な
場合は、コードが次のようになるようにオブジェクト コンストラクターに移動するだけで十分
です。工房。次に、次のようになります。var newObj = new MyObj(json[i]);
var newObj = MyObjFactory.Create(json[i]);
サービス/コントローラー
最後に、コントローラー/サービス オブジェクトを実装する必要があります。リポジトリと上記の他のオブジェクトとの間のすべての対話を処理するメソッドDoWorkを持つWorkServiceという名前にしましょう。おおよその DoWork は次のようになります。
function DoWork(fileId){
var json = fileRepository.SelectById(fileId);
for(var i=0;i<json.length;i++){
var newObj = new MyObj(json[i]); // or calling factory method
var dbRecord = MongoDBRepository.SelectByQuery(newObj.name, newObj.date);
if(dbRecord){
MongoDBRepository.Update(newObj);
}
else{
MongoDBRepository.Create(newObj);
}
}
}
これは単なる JavaScript 構文の疑似コードであることに注意してください。実際のコードはまったく異なるように見えるかもしれませんが、どのようなデザインが必要かという感覚を与えてくれます。また、明示的にDoWorkメソッド内にリポジトリオブジェクトを作成していません。それらを注入する方法を考えて、依存関係の逆転の原則を満たします。
それが役に立てば幸い!