TypeORM - praca z MongoDB

Ten rozdział wyjaśnia obszerną obsługę bazy danych MongoDB zapewnianą przez TypeORM. Mamy nadzieję, że zainstalowaliśmy mongodb przy użyciu npm. Jeśli nie jest zainstalowany, użyj poniższego polecenia, aby zainstalować sterownik MongoDB,

npm install mongodb --save

Tworzenie projektu

Utwórzmy nowy projekt za pomocą MongoDB w następujący sposób -

typeorm init --name MyProject --database mongodb

Skonfiguruj ormconfig.json

Skonfigurujmy opcje hosta, portu i bazy danych MongoDB w pliku ormconfig.json, jak określono poniżej -

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

Zdefiniuj elementy i kolumny

Stwórzmy nową jednostkę o nazwie Student w Twoim katalogu src. Elementy i kolumny są takie same. Aby wygenerować kolumnę klucza podstawowego, używamy@PrimaryColumn lub

@PrimaryGeneratedColumn. Można to zdefiniować jako @ObjectIdColumn. Prosty przykład pokazano poniżej -

Student.ts

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

@Entity() 
export class Student {  

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

Aby zapisać tę jednostkę, otwórz plik index.ts i dodaj następujące zmiany -

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

Teraz uruchom serwer, a otrzymasz następującą odpowiedź -

npm start

MongoDB EntityManager

Możemy również użyć EntityManagera do pobrania danych. Prosty przykład pokazano poniżej -

import {getManager} from "typeorm";

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

Podobnie możemy również użyć repozytorium, aby uzyskać dostęp do danych.

import {getMongoRepository} from "typeorm"; 

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

Jeśli chcesz filtrować dane za pomocą opcji równości w następujący sposób -

import {getMongoRepository} from "typeorm"; 

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

Jak widzieliśmy w tym rozdziale, TypeORM ułatwia pracę z silnikiem bazy danych MongoDB.