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.