Connection API
Main APIâ
createConnection()- å建ä¸ä¸ªæ°è¿æ¥å¹¶å°å ¶æ³¨åå°å ¨å±è¿æ¥ç®¡çå¨ä¸ã 妿çç¥connection optionsåæ°ï¼åä»ormconfigæä»¶æç¯å¢åéä¸è¯»åè¿æ¥é项ã
import {createConnection} from "typeorm";
const connection = await createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
});
createConnections()- å建å¤ä¸ªè¿æ¥å¹¶å¨å ¨å±è¿æ¥ç®¡çå¨ä¸æ³¨åå®ä»¬ã 妿çç¥connection optionsåæ°ï¼åä»ormconfigæä»¶æç¯å¢åéä¸è¯»åè¿æ¥é项ã
import {createConnections} from "typeorm";
const connection = await createConnections([{
name: "connection1",
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
}, {
name: "connection2",
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
}]);
getConnectionManager()- è·åå卿æå·²å建ï¼ä½¿ç¨createConnection()æcreateConnections()ï¼è¿æ¥ç管çå¨ã
import {getConnectionManager} from "typeorm";
const defaultConnection = getConnectionManager().get("default");
const secondaryConnection = getConnectionManager().get("secondary");
getConnection()- è·å使ç¨createConnectionæ¹æ³å建çè¿æ¥ã
import {getConnection} from "typeorm";
const connection = getConnection();
// 妿æå½åè¿æ¥ï¼åå¯ä»¥æå®å
¶åç§°ï¼
const secondaryConnection = getConnection("secondary-connection");
getEntityManager()- è·åEntityManagerã å¯ä»¥æå®è¿æ¥å称以æç¤ºåºè¯¥éç¨åªä¸ªè¿æ¥çå®ä½ç®¡çå¨ã
import {getEntityManager} from "typeorm";
const manager = getEntityManager();
// you can use manager methods now
const secondaryManager = getEntityManager("secondary-connection");
// you can use secondary connection manager methods
getRepository()- GetsRepositoryfor given entity from connection. å¯ä»¥æå®è¿æ¥å称以æç¤ºåºè¯¥éç¨åªä¸ªè¿æ¥çå®ä½ç®¡çå¨ã
import {getRepository} from "typeorm";
const userRepository = getRepository(User);
// you can use repository methods now
const blogRepository = getRepository(Blog, "secondary-connection");
// you can use secondary connection repository methods
getTreeRepository()- GetsTreeRepositoryfor given entity from connection. å¯ä»¥æå®è¿æ¥å称以æç¤ºåºè¯¥éç¨åªä¸ªè¿æ¥çå®ä½ç®¡çå¨ã
import {getTreeRepository} from "typeorm";
const userRepository = getTreeRepository(User);
// 使ç¨åå¨åºæ¹æ³
const blogRepository = getTreeRepository(Blog, "secondary-connection");
// 使ç¨å¦ä¸ä¸ªåå¨åºæ¹æ³
getMongoRepository()- è·åç»å®å®ä½çMongoRepositoryã å¯ä»¥æå®è¿æ¥å称以æç¤ºåºè¯¥éç¨åªä¸ªè¿æ¥çå®ä½ç®¡çå¨ã
import {getMongoRepository} from "typeorm";
const userRepository = getMongoRepository(User);
//使ç¨åå¨åºæ¹æ³
const blogRepository = getMongoRepository(Blog, "secondary-connection");
// 使ç¨å¦ä¸ä¸ªåå¨åºæ¹æ³
Connection APIâ
name- è¿æ¥åã å¦ææ²¡ææå®è¿æ¥åï¼åé»è®¤å¼ä¸ºdefaultã å¨å¤çå¤ä¸ªè¿æ¥æ¶ä½¿ç¨æ¤åç§°å¹¶è°ç¨getConnection(connectionNameï¼string)ã
const connectionName: string = connection.name;
options- ç¨äºå建æ¤è¿æ¥çè¿æ¥é项ã äºè§£æå ³è¿æ¥éé¡¹çæ´å¤ä¿¡æ¯ã
const connectionOptions: ConnectionOptions = connection.options;
// ä½ å¯ä»¥å°connectionOptions转æ¢ä¸ºMysqlConnectionOptionsæä»»ä½å
¶ä»xxxConnectionOptionsï¼
// å
·ä½åå³äºä½ 使ç¨çæ°æ®åºé©±å¨ç¨åº
isConnected- æç¤ºæ¯å¦å»ºç«äºä¸æ°æ®åºççå®è¿æ¥ã
const isConnected: boolean = connection.isConnected;
driver- æ¤è¿æ¥ä¸ä½¿ç¨çåºç¡æ°æ®åºé©±å¨ç¨åºã
const driver: Driver = connection.driver;
// ä½ å¯ä»¥æ ¹æ®ä½¿ç¨çæ°æ®åºé©±å¨ç¨åºå°connectionOptions转æ¢ä¸ºMysqlDriveræä»»ä½å
¶ä»xxxDriver
manager-EntityManagerç¨äºè¿æ¥å®ä½ã æ¥çæ´å¤å ³äºå®ä½ç®¡çå¨ååå¨åº.
const manager: EntityManager = connection.manager;
// ä½ å¯ä»¥è°ç¨manageræ¹æ³ï¼ä¾å¦findï¼
const user = await manager.findOne(1);
mongoManager-MongoEntityManagerç¨äºå¤çmongodbè¿æ¥ä¸çè¿æ¥å®ä½ã æå ³MongoEntityManagerçæ´å¤ä¿¡æ¯ï¼è¯·åé MongoDBææ¡£ã
const manager: MongoEntityManager = connection.mongoManager;
//ä½ å¯ä»¥è°ç¨manageræmongodb-managerç¹å®æ¹æ³ï¼ä¾å¦findï¼
const user = await manager.findOne(1);
connect- æ§è¡ä¸æ°æ®åºçè¿æ¥ã å½ä½ 使ç¨createConnectionæ¶ï¼å®ä¼èªå¨è°ç¨connectï¼ä½ ä¸éè¦èªå·±è°ç¨å®ã
await connection.connect();
close- å ³é䏿°æ®åºçè¿æ¥ã é常éè¦å¨åºç¨ç¨åºå ³éæ¶è°ç¨æ¤æ¹æ³ã
await connection.close();
synchronize- åæ¥æ°æ®åºæ¶æã å½å¨è¿æ¥é项ä¸è®¾ç½®synchronizeï¼trueæ¶ï¼å®ä¼è°ç¨æ¤æ¹æ³ã é常éè¦å¨åºç¨ç¨åºå ³éæ¶è°ç¨æ¤æ¹æ³ã
await connection.synchronize();
dropDatabase- å 餿°æ®åºåå ¶æææ°æ®ã 请谨æ ä½¿ç¨æ¤æ¹æ³ï¼å ä¸ºæ¤æ¹æ³å°æ¸ é¤æææ°æ®åºè¡¨åå ¶æ°æ®ã åªæå¨å»ºç«ä¸æ°æ®åºçè¿æ¥åæè½ä½¿ç¨ã
await connection.dropDatabase();
runMigrations- è¿è¡æææèµ·çè¿ç§»ã
await connection.runMigrations();
undoLastMigration- æ¢å¤ä¸æ¬¡æ§è¡çè¿ç§»ã
await connection.undoLastMigration();
hasMetadata- æ£æ¥æ¯å¦å·²æ³¨åç»å®å®ä½çå æ°æ®ã äºè§£æ´å¤å ³äº Entity Metadata.
if (connection.hasMetadata(User))
const userMetadata = connection.getMetadata(User);
getMetadata- è·åç»å®å®ä½çEntityMetadataã ä½ è¿å¯ä»¥æå®è¡¨åï¼å¦ææ¾å°å ·ææ¤ç±»è¡¨åçå®ä½å æ°æ®ï¼åä¼è¿å该åç§°ã äºè§£æ´å¤å ³äº Entity Metadata.
const userMetadata = connection.getMetadata(User);
// è·å¾æå
³ç¨æ·å®ä½çä»»ä½ä¿¡æ¯
getRepository- è·åç»å®å®ä½çRepositoryã ä½ è¿å¯ä»¥æå®è¡¨åï¼å¦ææ¾å°ç»å®è¡¨çåå¨åºï¼åä¼è¿å该表ã äºè§£æ´å¤å ³äº Repositoriesã
const repository = connection.getRepository(User);
// è°ç¨åå¨åºæ¹æ³ï¼ä¾å¦findï¼
const users = await repository.findOne(1);
getTreeRepository- GetsTreeRepositoryof the given entity. ä½ è¿å¯ä»¥æå®è¡¨åï¼å¦ææ¾å°ç»å®è¡¨çåå¨åºï¼åä¼è¿å该表ã äºè§£æ´å¤å ³äº Repositoriesã
const repository = connection.getTreeRepository(Category);
// è°ç¨æ åå¨åºæ¹æ³ï¼ä¾å¦findTreesï¼
const categories = await repository.findTrees();
getMongoRepository-è·åç»å®å®ä½çMongoRepositoryã æ¤åå¨åºç¨äºMongoDBè¿æ¥ä¸çå®ä½ã äºè§£æ´å¤å ³äº MongoDB support.
const repository = connection.getMongoRepository(User);
// è°ç¨ç¹å®äºmongodbçåå¨åºæ¹æ³ï¼ä¾å¦createEntityCursorï¼
const categoryCursor = repository.createEntityCursor();
const category1 = await categoryCursor.next();
const category2 = await categoryCursor.next();
getCustomRepository- è·åèªå®ä¹çåå¨åºã äºè§£æ´å¤å ³äº custom repositoriesã
const userRepository = connection.getCustomRepository(UserRepository);
// è°ç¨èªå®ä¹åå¨åºä¸çæ¹æ³ - UserRepositoryç±»
const crazyUsers = await userRepository.findCrazyUsers();
transaction- æä¾å个äºå¡ï¼å¨åä¸ªæ°æ®åºäºå¡ä¸æ§è¡å¤ä¸ªæ°æ®åºè¯·æ±ã äºè§£æ´å¤å ³äº Transactions.
await connection.transaction(async manager => {
// 注æï¼ä½ å¿
须使ç¨ç»å®ç管çå¨å®ä¾æ§è¡æææ°æ®åºæä½ï¼
// 宿¯ä¸ä¸ªä½¿ç¨æ¤äºå¡çEntityManagerçç¹æ®å®ä¾ï¼å¹¶ä¸ä¸è¦å¿è®°å¨å¤çæä½
});
query- æ§è¡åå§SQLæ¥è¯¢ã
const rawData = await connection.query(`SELECT * FROM USERS`);
createQueryBuilder- å建ä¸ä¸ªæ¥è¯¢æå»ºå¨ï¼å¯ç¨äºæå»ºæ¥è¯¢ã äºè§£æ´å¤å ³äº QueryBuilder.
const users = await connection.createQueryBuilder()
.select()
.from(User, "user")
.where("user.name = :name", { name: "John" })
.getMany();
createQueryRunner- å建ä¸ä¸ªç¨äºç®¡çå使ç¨å个ç宿°æ®åºè¿æ¥çæ¥è¯¢è¿è¡å¨ã äºè§£æ´å¤å ³äº QueryRunner.
const queryRunner = connection.createQueryRunner();
// åªæå¨è°ç¨connectæ§è¡çæ£çæ°æ®åºè¿æ¥åæè½ä½¿ç¨å®çæ¹æ³
await queryRunner.connect();
// .. ä½¿ç¨æ¥è¯¢è¿è¡å¨å¹¶è°ç¨å
¶æ¹æ³
// éè¦æç¤º - 䏿¦å®æ,ä¸è¦å¿è®°éæ¾æ¥è¯¢è¿è¡å¨
await queryRunner.release();
ConnectionManager APIâ
create- å建ä¸ä¸ªæ°è¿æ¥å¹¶å¨ç®¡çå¨ä¸æ³¨åã
const connection = connectionManager.create({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
});
get- è·åå·²ç»å建çè¿æ¥åå¨å¨ç®¡çå¨ä¸çåç§°ã
const defaultConnection = connectionManager.get("default");
const secondaryConnection = connectionManager.get("secondary");
has- æ£æ¥æ¯å¦å¨ç»å®çè¿æ¥ç®¡çå¨ä¸æ³¨åäºè¿æ¥ã
if (connectionManager.has("default")) {
// ...
}