TypeORM - Arbeiten mit Repository
Das Repository ist spezifisch für eine Entität. Mit anderen Worten, jede Entität verfügt über ein eigenes integriertes Repository, auf das mit der unten angegebenen Methode getRepository () des Verbindungsobjekts zugegriffen werden kann.
const studRepository = manager.getRepository(Student);
Sobald das Schüler-Repository-Objekt erstellt wurde, können alle Datenbankoperationen des Schülerobjekts ausgeführt werden.
Repository-Typen
Repositorywird in vier Kategorien eingeteilt. Sie sind wie folgt -
Repository
Standard-Repository einer Entität, auf das mit zugegriffen werden kann getRepository() Methode wie unten angegeben -
const studRepository = manager.getRepository(Student);
Jetzt, studRepository kann verwendet werden, um Schülertabelle abzufragen
TreeRepository
Wird für baumähnliche Strukturentitäten verwendet und kann über verwendet werden getTreeRepository() Methode wie unten angegeben -
const studcaRepository = manager.getTreeRepository(Student);
MongoRepository
Wird in mongoDB-Operationsentitäten verwendet und kann über verwendet werden getMongoRepository() Methode wie unten angegeben -
const detailsRepository = manager.getMongoRepository(Details);
CustomRepository
Wird zum Anpassen des Repositorys verwendet und kann über verwendet werden getCustomRepository() Methode wie unten angegeben,
const myUserRepository = manager.getCustomRepository(UserRepository);
Repository-API
Lassen Sie uns in diesem Kapitel die wichtigste Methode des EntityManager kennenlernen.
Manager
Wir können zugreifen EntityManager unter Verwendung der unten angegebenen Manager-Methode -
const manager = repository.manager;
queryRunner
queryRunnerDie Methode gibt ein benutzerdefiniertes Abfrage-Runner-Objekt zurück und wird vom Repository für Datenbankoperationen verwendet. Der Beispielcode lautet wie folgt:
const queryRunner = repository.queryRunner;
Metadaten
metadataGibt die Metadaten des Repositorys zurück. Der Beispielcode lautet wie folgt:
const metadata = repository.metadata;
Abfrage
queryMethode führt SQL-Abfragen aus. Einfache Auswahlabfrage wie unten gezeigt -
const qur = await repository.query(`select * from students`);
einfügen
insertMethode wird verwendet, um eine neue Entität oder ein neues Array von Entitäten in die Datenbank einzufügen. Der Beispielcode lautet wie folgt:
await repository.insert({
Name: "Student3",
Age: 14
});
Die obige Abfrage entspricht:
insert into student(Name,age) values("Student3",14)
aktualisieren
update wird verwendet, um die vorhandenen Datensätze in der Datenbank zu aktualisieren.
await repository.update(1, { Name: "Adam" });
Diese Abfrage funktioniert ähnlich wie die unten erwähnte -
update student SET Name = "Adam" where id = 1
löschen
delete Methode löscht den angegebenen Datensatz aus der Tabelle,
await repository.delete(Student, 1);
Dadurch wird der Schüler mit seiner ID gelöscht 1 von dem studentTabelle. Es ist äquivalent zu,
delete from student where id=1;
Wenn Sie nach Namen löschen möchten, verwenden Sie die folgende Abfrage:
await repository.delete({ Name: "Student1" });
Diese Abfrage löscht alle Schüler mit Namen. Student1
** softDelete und wiederherstellen **
Es wird verwendet, um die Daten sanft zu löschen, und Sie können den Datensatz basierend auf der ID des Schülers wiederherstellen. Der Beispielcode lautet wie folgt:
await repository.softDelete(1);
Sie können den Schülerdatensatz mit dem folgenden Befehl wiederherstellen:
await repository.restore(1);
Eine alternative Option zum Löschen und Wiederherstellen ist die Verwendung softRemove und recoverMethoden. Der Beispielcode lautet wie folgt:
//find the entities const enty = await repository.find();
//soft removed entity const entySoftRemove = await repository.softRemove(enty);
Sie können sie mithilfe der unten angegebenen Wiederherstellungsmethode wiederherstellen.
await repository.recover(entySoftRemove);
sparen
savewird verwendet, um die angegebene Entität in der Datenbank zu speichern. Einfache Student-Entität kann wie unten gezeigt gespeichert werden -
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);
Dadurch wird der Datenbank ein neuer Schülerdatensatz hinzugefügt.
entfernen
removewird verwendet, um die angegebene Entität aus der Datenbank zu löschen. Einfache Schülerentität kann wie unten gezeigt gelöscht werden -
await repository.remove(stud);
Anzahl
countDie Methode gibt die Anzahl der in der Tabelle verfügbaren Datensätze zurück und Sie können sie für Paginierungszwecke verwenden. Der Beispielcode lautet wie folgt:
const cnt = await repository.count(Student, { age: 12 });
finden
findMethode wird für Suchzwecke verwendet. Es ruft den gesamten Datensatz aus der Datenbank ab, wie unten gezeigt -
const result = await repository.find({ id: 1 });
einen finden
Ähnlich zu findMethode, gibt aber den ersten übereinstimmenden Datensatz zurück. Der Beispielcode lautet wie folgt:
const result = await repository.findOne({ id: 1 });
klar
clearMethode löscht alle Daten aus der Tabelle. Der Beispielcode lautet wie folgt:
await repository.clear();