TypeORM - Trabalhando com MongoDB
Este capítulo explica o amplo suporte ao banco de dados MongoDB fornecido pelo TypeORM. Felizmente, instalamos o mongodb usando o npm. Se não estiver instalado, use o comando abaixo para instalar o driver MongoDB,
npm install mongodb --save
Criação de um projeto
Vamos criar um novo projeto usando MongoDB da seguinte maneira -
typeorm init --name MyProject --database mongodb
Configure ormconfig.json
Vamos configurar as opções de host, porta e banco de dados MongoDB no arquivo ormconfig.json conforme especificado abaixo -
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"
}
}
Defina entidades e colunas
Vamos criar uma nova entidade chamada Student dentro do seu diretório src. Entidades e colunas são iguais. Para gerar a coluna de chave primária, usamos@PrimaryColumn ou
@PrimaryGeneratedColumn. Isso pode ser definido como @ObjectIdColumn. Um exemplo simples é mostrado abaixo -
Student.ts
import {Entity, ObjectID, ObjectIdColumn, Column} from "typeorm";
@Entity()
export class Student {
@ObjectIdColumn()
id: ObjectID;
@Column()
Name: string;
@Column()
Country: string;
}
Para salvar esta entidade, abra o arquivo index.ts e adicione as seguintes alterações -
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));
Agora, inicie o seu servidor e você obterá a seguinte resposta -
npm start
MongoDB EntityManager
Também podemos usar EntityManager para buscar dados. Um exemplo simples é mostrado abaixo -
import {getManager} from "typeorm";
const manager = getManager();
const result = await manager.findOne(Student, { id:1 });
Da mesma forma, também podemos usar o repositório para acessar os dados.
import {getMongoRepository} from "typeorm";
const studentRepository = getMongoRepository(Student);
const result = await studentRepository.findOne({ id:1 });
Se você deseja filtrar os dados usando a opção igual a seguir -
import {getMongoRepository} from "typeorm";
const studentRepository = getMongoRepository(Student);
const result = await studentRepository.find({
where: {
Name: {$eq: "Student1"},
}
});
Como vimos neste capítulo, o TypeORM facilita o trabalho com o mecanismo de banco de dados MongoDB.