TypeORM - Trabajar con MongoDB

Este capítulo explica la amplia compatibilidad con la base de datos MongoDB proporcionada por TypeORM. Con suerte, hemos instalado mongodb usando npm. Si no está instalado, use el siguiente comando para instalar el controlador MongoDB,

npm install mongodb --save

Creando un proyecto

Creemos un nuevo proyecto usando MongoDB de la siguiente manera:

typeorm init --name MyProject --database mongodb

Configurar ormconfig.json

Configuremos las opciones de host, puerto y base de datos de MongoDB en el archivo ormconfig.json como se especifica a continuación:

ormconfig.json

{ 
   "type": "mongodb", 
   "host": "localhost", 
   "port": 27017, 
   "database": "test", 
   "synchronize": true, 
   "logging": false, 
   "entities": [ 
      "src/entity/**/*.ts" 
   ], 
   "migrations": [ "src/migration/**/*.ts" 
   ], 
   "subscribers": [ "src/subscriber/**/*.ts" 
   ], 
   "cli": { 
      "entitiesDir": "src/entity", "migrationsDir": "src/migration", "subscribersDir": "src/subscriber" 
   } 
}

Definir entidades y columnas

Creemos una nueva entidad llamada Student dentro de su directorio src. Las entidades y columnas son las mismas. Para generar la columna de clave primaria, usamos@PrimaryColumn o

@PrimaryGeneratedColumn. Esto se puede definir como @ObjectIdColumn. A continuación se muestra un ejemplo simple:

Student.ts

import {Entity, ObjectID, ObjectIdColumn, Column} from "typeorm"; 

@Entity() 
export class Student {  

   @ObjectIdColumn() 
   id: ObjectID; 
   
   @Column() 
   Name: string; 
   
   @Column() 
   Country: string; 
}

Para guardar esta entidad, abra el archivo index.ts y agregue los siguientes cambios:

index.ts

import "reflect-metadata"; 
import {createConnection} from "typeorm"; 
import {Student} from "./entity/Student"; 

createConnection().then(async connection => { 

   console.log("Inserting a new Student into the database..."); const std = new Student(); std.Name = "Student1"; 
   std.Country = "India"; 
   await connection.manager.save(std); console.log("Saved a new user with id: " + std.id); 
   
   console.log("Loading users from the database..."); 
   const stds = await connection.manager.find(Student); console.log("Loaded users: ", stds); 
   
   console.log("TypeORM with MongoDB"); 
}).catch(error => console.log(error));

Ahora, inicie su servidor y obtendrá la siguiente respuesta:

npm start

EntityManager de MongoDB

También podemos usar EntityManager para obtener datos. A continuación se muestra un ejemplo simple:

import {getManager} from "typeorm";

const manager = getManager(); 
const result = await manager.findOne(Student, { id:1 });

Del mismo modo, también podemos usar el repositorio para acceder a los datos.

import {getMongoRepository} from "typeorm"; 

const studentRepository = getMongoRepository(Student); 
const result = await studentRepository.findOne({ id:1 });

Si desea filtrar los datos utilizando la misma opción de la siguiente manera:

import {getMongoRepository} from "typeorm"; 

const studentRepository = getMongoRepository(Student); 
const result = await studentRepository.find({ 
   where: { 
      Name: {$eq: "Student1"}, 
   } 
});

Como vimos en este capítulo, TypeORM facilita el trabajo con el motor de base de datos MongoDB.