TypeORM - Trabajar con repositorio
El repositorio es específico de una entidad. En otras palabras, cada entidad tendrá su propio repositorio integrado y se puede acceder a él mediante el método getRepository () del objeto de conexión como se especifica a continuación:
const studRepository = manager.getRepository(Student);
Una vez que se crea el objeto del repositorio del estudiante, se puede usar para realizar todas las operaciones de la base de datos del objeto del estudiante.
Tipos de repositorio
Repositoryse clasifica en cuatro categorías. Son los siguientes:
Repositorio
Repositorio predeterminado de una entidad y se puede acceder usando getRepository() método como se especifica a continuación -
const studRepository = manager.getRepository(Student);
Ahora, studRepository se puede utilizar para consultar la tabla de estudiantes
TreeRepository
Se utiliza para entidades de estructura en forma de árbol y se puede acceder mediante getTreeRepository() método como se especifica a continuación -
const studcaRepository = manager.getTreeRepository(Student);
MongoRepository
Se usa dentro de las entidades de operación mongoDB y se puede acceder a él usando getMongoRepository() método como se especifica a continuación -
const detailsRepository = manager.getMongoRepository(Details);
CustomRepository
Se usa para personalizar el repositorio y se puede acceder a él usando getCustomRepository() método como se especifica a continuación,
const myUserRepository = manager.getCustomRepository(UserRepository);
API de repositorio
Aprendamos el método más importante de EntityManager en este capítulo.
gerente
Podemos acceder EntityManager usando el método de administrador como se especifica a continuación -
const manager = repository.manager;
queryRunner
queryRunnerEl método devuelve un objeto de ejecución de consultas personalizado y el repositorio lo utiliza para operaciones de base de datos. El código de muestra es el siguiente:
const queryRunner = repository.queryRunner;
metadatos
metadatadevuelve los metadatos del repositorio. El código de muestra es el siguiente:
const metadata = repository.metadata;
consulta
queryEl método ejecuta consultas SQL. Consulta de selección simple como se muestra a continuación:
const qur = await repository.query(`select * from students`);
insertar
insertEl método se utiliza para insertar una nueva entidad o matriz de entidades en la base de datos. El código de muestra es el siguiente:
await repository.insert({
Name: "Student3",
Age: 14
});
La consulta anterior es equivalente a,
insert into student(Name,age) values("Student3",14)
actualizar
update se utiliza para actualizar los registros existentes en la base de datos.
await repository.update(1, { Name: "Adam" });
Esta consulta funciona de manera similar a la que se menciona a continuación:
update student SET Name = "Adam" where id = 1
Eliminar
delete El método eliminará el registro especificado de la tabla,
await repository.delete(Student, 1);
Esto eliminará al estudiante con identificación 1 desde el studentmesa. Es equivalente a,
delete from student where id=1;
Si desea eliminar por nombre, utilice la siguiente consulta,
await repository.delete({ Name: "Student1" });
Esta consulta eliminará todos los estudiantes que tengan nombre, Student1
** softDelete y restaurar **
Se utiliza para eliminar los datos por software y puede restaurar el registro en función de la identificación del estudiante. El código de muestra es el siguiente:
await repository.softDelete(1);
Puede restaurar el registro del estudiante usando el siguiente comando:
await repository.restore(1);
Una opción alternativa para eliminar y restaurar es usar softRemove y recovermétodos. El código de muestra es el siguiente:
//find the entities const enty = await repository.find();
//soft removed entity const entySoftRemove = await repository.softRemove(enty);
Y puede recuperarlos utilizando el método de recuperación como se especifica a continuación,
await repository.recover(entySoftRemove);
salvar
savese utiliza para guardar la entidad dada en la base de datos. La entidad de estudiante simple se puede guardar como se muestra a continuación:
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);
Esto agregará un nuevo registro de estudiante a la base de datos.
eliminar
removese utiliza para eliminar la entidad dada de la base de datos. La entidad de estudiante simple se puede eliminar como se muestra a continuación:
await repository.remove(stud);
contar
countEl método devolverá el número de registros disponibles en la tabla y puede usarlo con fines de paginación. El código de muestra es el siguiente:
const cnt = await repository.count(Student, { age: 12 });
encontrar
findEl método se utiliza con fines de búsqueda. Obtiene todo el registro de la base de datos como se muestra a continuación:
const result = await repository.find({ id: 1 });
Encuentra uno
Similar a findmétodo, pero devuelve el primer registro coincidente. El código de muestra es el siguiente:
const result = await repository.findOne({ id: 1 });
claro
clearEl método borra todos los datos de la tabla. El código de muestra es el siguiente:
await repository.clear();