TypeORM-リポジトリの操作
リポジトリはエンティティに固有です。つまり、各エンティティには独自の組み込みリポジトリがあり、以下に指定するように、接続オブジェクトのgetRepository()メソッドを使用してアクセスできます。
const studRepository = manager.getRepository(Student);
学生リポジトリオブジェクトが作成されると、それを使用して学生オブジェクトのすべてのデータベース操作を実行できます。
リポジトリタイプ
Repository4つのカテゴリに分類されます。それらは次のとおりです-
リポジトリ
エンティティのデフォルトリポジトリであり、を使用してアクセスできます getRepository() 以下に指定する方法-
const studRepository = manager.getRepository(Student);
さて、 studRepository 学生テーブルのクエリに使用できます
TreeRepository
ツリーのような構造エンティティに使用され、を使用してアクセスできます getTreeRepository() 以下に指定する方法-
const studcaRepository = manager.getTreeRepository(Student);
MongoRepository
mongoDB操作エンティティ内で使用され、を使用してアクセスできます getMongoRepository() 以下に指定する方法-
const detailsRepository = manager.getMongoRepository(Details);
CustomRepository
リポジトリをカスタマイズするために使用され、を使用してアクセスできます getCustomRepository() 以下に指定する方法、
const myUserRepository = manager.getCustomRepository(UserRepository);
リポジトリAPI
この章では、EntityManagerの最も重要な方法を学びましょう。
マネージャー
アクセスできます EntityManager 以下に指定するマネージャーメソッドを使用する-
const manager = repository.manager;
queryRunner
queryRunnerメソッドはカスタムクエリランナーオブジェクトを返し、リポジトリによるデータベース操作に使用されます。サンプルコードは次のとおりです-
const queryRunner = repository.queryRunner;
メタデータ
metadataリポジトリのメタデータを返します。サンプルコードは次のとおりです-
const metadata = repository.metadata;
クエリ
queryメソッドはSQLクエリを実行します。以下に示す単純な選択クエリ-
const qur = await repository.query(`select * from students`);
インサート
insertメソッドは、新しいエンティティまたはエンティティの配列をデータベースに挿入するために使用されます。サンプルコードは次のとおりです-
await repository.insert({
Name: "Student3",
Age: 14
});
上記のクエリは、と同等です。
insert into student(Name,age) values("Student3",14)
更新
update データベース内の既存のレコードを更新するために使用されます。
await repository.update(1, { Name: "Adam" });
このクエリは、以下のクエリと同様に機能します-
update student SET Name = "Adam" where id = 1
削除
delete メソッドは、指定されたレコードをテーブルから削除します。
await repository.delete(Student, 1);
これにより、IDを持つ学生が削除されます 1 から studentテーブル。と同等です、
delete from student where id=1;
名前で削除する場合は、以下のクエリを使用してください。
await repository.delete({ Name: "Student1" });
このクエリは、名前を持つすべての学生を削除します。 Student1
** softDeleteと復元**
データをソフト削除するために使用され、学生のIDに基づいてレコードを復元できます。サンプルコードは次のとおりです-
await repository.softDelete(1);
以下のコマンドを使用して、学生の記録を復元できます-
await repository.restore(1);
削除して復元する別のオプションは、 softRemove そして recoverメソッド。サンプルコードは次のとおりです-
//find the entities const enty = await repository.find();
//soft removed entity const entySoftRemove = await repository.softRemove(enty);
そして、以下に指定されているリカバリ方法を使用してそれらをリカバリできます。
await repository.recover(entySoftRemove);
保存する
save指定されたエンティティをデータベースに保存するために使用されます。単純なStudentエンティティは次のように保存できます-
import {Student} from "./entity/Student";
createConnection().then(async connection => {
console.log("Inserting a new record into the student database...");
const stud = new Student();
stud.Name = "student1";
stud.age = 12;
await repository.save(stud);
これにより、新しい学生レコードがデータベースに追加されます。
削除する
remove指定されたエンティティをデータベースから削除するために使用されます。単純な学生エンティティは、以下に示すように削除できます-
await repository.remove(stud);
カウント
countメソッドは、テーブルで使用可能なレコードの数を返し、ページ付けの目的で使用できます。サンプルコードは次のとおりです-
const cnt = await repository.count(Student, { age: 12 });
見つける
findメソッドは検索目的で使用されます。以下に示すように、データベースからすべてのレコードをフェッチします-
const result = await repository.find({ id: 1 });
findOne
に似ている findメソッドですが、最初に一致したレコードを返します。サンプルコードは次のとおりです-
const result = await repository.findOne({ id: 1 });
晴れ
clearメソッドは、テーブルからすべてのデータをクリアします。サンプルコードは次のとおりです-
await repository.clear();