📜  typeorm mongodb 连接 (1)

📅  最后修改于: 2023-12-03 15:35:23.970000             🧑  作者: Mango

TypeORM 和 MongoDB 连接

本文介绍如何使用 TypeORM 来连接 MongoDB 数据库。TypeORM 是一个 TypeScript 编写的 ORM 框架,可以与多种数据库系统集成,包括 MySQL, PostgreSQL, Oracle, SQLite, MS SQL Server 和 MongoDB。

安装 TypeORM 和 MongoDB 驱动

要使用 TypeORM 连接 MongoDB 数据库,需要安装两个包:typeormmongodb 驱动程序。

npm install typeorm mongodb --save
创建数据库连接

在使用 TypeORM 之前,需要先创建一个数据库连接。可以通过以下代码来创建:

import { createConnection, ConnectionOptions } from 'typeorm';

const options: ConnectionOptions = {
  type: 'mongodb',
  host: 'localhost',
  port: 27017,
  database: 'mydatabase',
};

createConnection(options).then(() => {
  console.log('Connected to MongoDB database');
}).catch((error) => {
  console.log(`Connection error: ${error}`);
});

在上面的代码中,我们通过 createConnection 函数来创建连接。ConnectionOptions 对象包含了连接的参数。type 必须设置为 'mongodb'。host 是 MongoDB 服务器地址,port 是端口号。database 是要连接的数据库名称。

定义实体

在使用 TypeORM 时,我们需要定义一个实体类来表示数据库中的表或集合。一个实体类对应一个 MongoDB 集合。例如,下面的代码定义了一个 User 实体类:

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

@Entity()
export class User {

  @ObjectIdColumn()
  id: ObjectID;

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column()
  email: string;

}

在上面的代码中,我们使用 @Entity 装饰器来定义实体类。@ObjectIdColumn 装饰器表示此字段是数据库对象 ID。@Column 装饰器用于定义每个字段的类型和验证规则。

创建和查询实体

创建实体对象非常简单,只需要使用实体类的构造函数即可:

import { getMongoRepository } from 'typeorm';
import { User } from './user.entity';

const userRepository = getMongoRepository(User);

const user = new User();
user.firstName = 'John';
user.lastName = 'Doe';
user.email = 'john.doe@example.com';

const result = await userRepository.save(user);
console.log(`Created user with ID ${result.id}`);

在上面的代码中,我们使用 getMongoRepository 函数获取实体的 Repository。然后,我们创建一个 User 对象并保存到数据库中。

如果我们要查询数据库中的数据,则可以使用以下代码来实现:

const users = await userRepository.find();
console.log(`Found ${users.length} user(s)`);

我们可以使用 find 方法来查找所有的实体。如果要根据条件查询,则可以使用 findOnefindMany 方法。

结论

通过上述介绍,我们学习了如何使用 TypeORM 来连接和操作 MongoDB 数据库。TypeORM 提供了强大的功能和灵活性,可以让开发人员更加高效地与数据库打交道。我们希望本文对您有所帮助。