TypeORM - Travailler avec MongoDB

Ce chapitre explique la prise en charge étendue de la base de données MongoDB fournie par TypeORM. Espérons que nous avons installé mongodb en utilisant npm. S'il n'est pas installé, utilisez la commande ci-dessous pour installer le pilote MongoDB,

npm install mongodb --save

Créer un projet

Créons un nouveau projet en utilisant MongoDB comme suit -

typeorm init --name MyProject --database mongodb

Configurer ormconfig.json

Configurons les options d'hôte, de port et de base de données MongoDB dans le fichier ormconfig.json comme spécifié ci-dessous -

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" 
   } 
}

Définir des entités et des colonnes

Créons une nouvelle entité nommée Student dans votre répertoire src. Les entités et les colonnes sont identiques. Pour générer une colonne de clé primaire, nous utilisons@PrimaryColumn ou

@PrimaryGeneratedColumn. Cela peut être défini comme @ObjectIdColumn. Un exemple simple est montré ci-dessous -

Student.ts

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

@Entity() 
export class Student {  

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

Pour enregistrer cette entité, ouvrez le fichier index.ts et ajoutez les modifications suivantes -

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));

Maintenant, démarrez votre serveur et vous obtiendrez la réponse suivante -

npm start

MongoDB EntityManager

Nous pouvons également utiliser EntityManager pour récupérer des données. Un exemple simple est montré ci-dessous -

import {getManager} from "typeorm";

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

De même, nous pouvons également utiliser le référentiel pour accéder aux données.

import {getMongoRepository} from "typeorm"; 

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

Si vous souhaitez filtrer les données en utilisant l'option d'égalité comme suit -

import {getMongoRepository} from "typeorm"; 

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

Comme nous l'avons vu dans ce chapitre, TypeORM facilite le travail avec le moteur de base de données MongoDB.