TypeORM是一个在Node.js中使用的ORM(对象关系映射)库。它可以用来在JavaScript或TypeScript中与数据库进行交互。TypeORM支持多种数据库系统,包括MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL等。
以下是如何在Node.js项目中安装和使用TypeORM的基本步骤:
首先,你需要在你的项目中安装TypeORM。你可以使用npm(Node包管理器)来做这个。在你的命令行中运行以下命令:
npm install typeorm --save
创建一个TypeORM连接。这通常在你的应用程序启动时完成。以下是一个创建连接的例子:
const {createConnection} = require('typeorm');
createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
entities: [
__dirname + "/entity/*.js"
],
synchronize:,
}).then(connection => {
// 这里可以开始使用你的实体进行数据库操作
}).catch(error => console.log(error));
定义你的实体。实体在TypeORM中是数据库表的模型表示。以下是一个简单的实体例子:
const {Entity, PrimaryGeneratedColumn, Column} = require('typeorm');
@Entity()
class User {
@PrimaryGeneratedColumn()
id = undefined;
@Column("text")
name = "";
@Column("text")
password = "";
}
module.exports = User;
使用你的实体进行数据库操作。以下是一个插入新用户的例子:
let user = new User();
user.name = "John";
user.password = "password";
await connection.manager.save(user);
以上就是TypeORM的基本使用。TypeORM有很多其他的特性和选项,你可以在TypeORM的官方文档中找到更多的信息。
在TypeORM中,你可以使用Repository API进行增删改查操作。以下是一些基本示例:
插入(Create)
let user = new User();
user.name = "John";
user.password = "password";
await connection.manager.save(user);
查询(Read)
// 查询所有用户
let users = await connection.manager.find(User);
// 根据ID查询用户
let user = await connection.manager.findOne(User, 1);
// 根据条件查询用户
let users = await connection.manager.find(User, { name: "John" });
更新(Update)
let user = await connection.manager.findOne(User, 1);
user.name = "Updated Name";
await connection.manager.save(user);
删除(Delete)
let user = await connection.manager.findOne(User, 1);
await connection.manager.remove(user);
注意:在上述示例中,connection.manager是一个EntityManager实例,它提供了一组用于数据库操作的方法。你也可以使用getRepository方法获取一个特定实体的Repository,然后使用它进行数据库操作,例如:
let userRepository = connection.getRepository(User);
let user = await userRepository.findOne(1);
在实际使用中,你可能需要根据你的具体需求和数据库结构来调整这些示例。
TypeORM可以运行原生的SQL命令。你可以使用query方法来执行任何SQL命令。以下是一个例子:
const result = await connection.manager.query('SELECT * FROM users');
在这个例子中,query方法执行了一个原生的SQL查询,返回一个Promise,这个Promise resolve时会返回查询结果。
但是,尽管TypeORM支持运行原生SQL,我们仍然建议尽可能使用TypeORM的API进行数据库操作,因为这样可以利用TypeORM的许多特性,例如类型安全、自动完成和SQL注入防护。只有在TypeORM的API无法满足需求时,才应考虑使用原生SQL。