æ°æ®åºè¿æ¥
ä»ä¹æ¯Connectionâ
åªæå¨å»ºç«è¿æ¥åæè½ä¸æ°æ®åºè¿è¡äº¤äºã
TypeORM çConnectionä¸ä¼åçèµ·æ¥é£æ ·è®¾ç½®åä¸ªæ°æ®åºè¿æ¥ï¼èæ¯è®¾ç½®è¿æ¥æ± ã
å¦æä½ å¯¹æ°æ®åºè¿æ¥æå
´è¶£ï¼è¯·åé
QueryRunnerææ¡£ã
QueryRunnerçæ¯ä¸ªå®ä¾é½æ¯ä¸ä¸ªç¬ç«çæ°æ®åºè¿æ¥ã䏿¦è°ç¨Connectionçconnectæ¹æ³ï¼å°±å»ºç«è¿æ¥æ± 设置ã
å¦æä½¿ç¨createConnection彿°è®¾ç½®è¿æ¥ï¼åä¼èªå¨è°ç¨connectæ¹æ³ãè°ç¨closeæ¶ä¼æå¼è¿æ¥ï¼å
³éæ± ä¸çææè¿æ¥ï¼ã
é常æ
åµä¸ï¼ä½ åªè½å¨åºç¨ç¨åºå¯å¨æ¶åå»ºä¸æ¬¡è¿æ¥ï¼å¹¶å¨å®å
¨ä½¿ç¨æ°æ®åºåå
³éå®ãå®é
ä¸ï¼å¦æè¦ä¸ºç«ç¹æå»ºå端ï¼å¹¶ä¸å端æå¡å¨å§ç»ä¿æè¿è¡,åä¸éè¦å
³éè¿æ¥ã
å建æ°çè¿æ¥â
æå¤ç§æ¹æ³å¯ä»¥åå»ºè¿æ¥ã使¯æç®ååæå¸¸ç¨çæ¹æ³æ¯ä½¿ç¨createConnectionåcreateConnections彿°ã
createConnection å建åä¸ªè¿æ¥ï¼
import { createConnection, Connection } from "typeorm";
const connection = await createConnection({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
});
åªä½¿ç¨urlåtypeä¹å¯ä»¥è¿è¡è¿æ¥ã
createConnection({
type: "postgres",
url: "postgres://test:test@localhost/test"
});
createConnections å建å¤ä¸ªè¿æ¥:
import { createConnections, Connection } from "typeorm";
const connections = await createConnections([
{
name: "default",
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
},
{
name: "test2-connection",
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test2"
}
]);
è¿ä¸¤ç§æ¹å¼é½æ ¹æ®ä½ ä¼ éçè¿æ¥é项å建Connectionï¼å¹¶è°ç¨connectæ¹æ³ãå¦å¤ä½ ä¹å¯ä»¥å¨é¡¹ç®çæ ¹ç®å½ä¸å建ä¸ä¸ªormconfig.jsonæä»¶ï¼createConnectionåcreateConnectionså°èªå¨ä»æ¤æä»¶ä¸è¯»åè¿æ¥é项ã项ç®çæ ¹ç®å½ä¸node_modulesç®å½ç级å«ç¸åã
import { createConnection, createConnections, Connection } from "typeorm";
// createConnectionå°ä»ormconfig.json / ormconfig.js / ormconfig.yml / ormconfig.env / ormconfig.xml æä»¶æç¹æ®ç¯å¢åéä¸å è½½è¿æ¥é项
const connection: Connection = await createConnection();
// ä½ å¯ä»¥æå®è¦å建çè¿æ¥çåç§°
// ï¼å¦æçç¥åç§°ï¼åå°å建没ææå®åç§°çè¿æ¥ï¼
const secondConnection: Connection = await createConnection("test2-connection");
// 妿è°ç¨createConnectionsè䏿¯createConnection
// å®å°åå§åå¹¶è¿åormconfigæä»¶ä¸å®ä¹çææè¿æ¥
const connections: Connection[] = await createConnections();
ä¸åçè¿æ¥å¿
é¡»å
·æä¸åçåç§°ãé»è®¤æ
åµä¸ï¼å¦ææªæå®è¿æ¥åç§°ï¼å为defaultã
é常å¨ä½ 使ç¨å¤ä¸ªæ°æ®åºæå¤ä¸ªè¿æ¥é
ç½®æ¶æä¼ä½¿ç¨å¤è¿æ¥ã
åå»ºè¿æ¥åï¼ä½ å¯ä»¥ä½¿ç¨getConnection彿°ä»åºç¨ç¨åºä¸çä»»ä½ä½ç½®ä½¿ç¨å®ï¼
import { getConnection } from "typeorm";
// å¯ä»¥å¨è°ç¨createConnectionå使ç¨å¹¶è§£æ
const connection = getConnection();
// å¦æä½ æå¤ä¸ªè¿æ¥ï¼åå¯ä»¥æåç§°è·åè¿æ¥
const secondConnection = getConnection("test2-connection");
åºé¿å é¢å¤å建 classes/services æ¥åå¨å管çè¿æ¥ãæ¤åè½å·²åµå ¥å° TypeORM ä¸ - æ éè¿åº¦å·¥ç¨å¹¶å建æ ç¨çæ½è±¡ã
使ç¨ConnectionManagerâ
ä½ å¯ä»¥ä½¿ç¨ConnectionManagerç±»åå»ºè¿æ¥ãä¾å¦ï¼
import { getConnectionManager, ConnectionManager, Connection } from "typeorm";
const connectionManager = getConnectionManager();
const connection = connectionManager.create({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
});
await connection.connect(); // æ§è¡è¿æ¥
è¿ä¸æ¯å¸¸è§åå»ºè¿æ¥çæ¹æ³ï¼ä½å®å¯è½å¯¹æäºç¨æ·æç¨ãä¾å¦ï¼æ³è¦åå»ºè¿æ¥å¹¶åå¨å
¶å®ä¾,åæ¶æ§å¶ä½æ¶å»ºç«å®é
"connection"ãä½ è¿å¯ä»¥å建åç»´æ¤èªå·±çConnectionManagerï¼
import { getConnectionManager, ConnectionManager, Connection } from "typeorm";
const connectionManager = new ConnectionManager();
const connection = connectionManager.create({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test"
});
await connection.connect(); // æ§è¡è¿æ¥
ä½è¯·æ³¨æï¼ä½¿ç¨è¯¥æ¹å¼ï¼ä½ å°æ æ³å使ç¨getConnection() - ä½ éè¦åå¨è¿æ¥ç®¡çå¨å®ä¾ï¼å¹¶ä½¿ç¨connectionManager.getæ¥è·åæéçè¿æ¥ã
é常æ
åµä¸ä¸ºé¿å
åºç¨ç¨åºä¸åºç°ä¸å¿
è¦ç夿æ
åµï¼åºå°½éå°ä½¿ç¨æ¤æ¹æ³ï¼é¤éä½ ç¡®å®è®¤ä¸ºéè¦æ¶æä½¿ç¨ConnectionManagerã
使ç¨è¿æ¥â
è®¾ç½®è¿æ¥åï¼å¯ä»¥ä½¿ç¨getConnection彿°å¨åºç¨ç¨åºçä»»ä½ä½ç½®ä½¿ç¨å®ï¼
import { getConnection } from "typeorm";
import { User } from "../entity/User";
export class UserController {
@Get("/users")
getAll() {
return getConnection().manager.find(User);
}
}
ä½ ä¹å¯ä»¥ä½¿ç¨ConnectionManagerï¼getæ¥è·åè¿æ¥ï¼ä½å¨å¤§å¤æ°æ
åµä¸ä½¿ç¨getConnection()就足å¤äºã
ä½¿ç¨ Connectionï¼ä½ å¯ä»¥å¯¹å®ä½æ§è¡æ°æ®åºæä½ï¼å°¤å
¶æ¯ä½¿ç¨è¿æ¥çEntityManageråRepositoryã
æå
³å®ä»¬çæ´å¤ä¿¡æ¯ï¼è¯·åé
Entity Manager å Repository ææ¡£ã
ä½ä¸è¬æ¥è¯´ï¼ä½ ä¸è¦å¤ªå¤ä½¿ç¨Connectionã大夿°æ
åµä¸ï¼ä½ åªéåå»ºè¿æ¥å¹¶ä½¿ç¨getRepository()ågetManager()æ¥è®¿é®è¿æ¥ç管çå¨ååå¨åºï¼èæ éç´æ¥ä½¿ç¨è¿æ¥å¯¹è±¡ï¼
import { getManager, getRepository } from "typeorm";
import { User } from "../entity/User";
export class UserController {
@Get("/users")
getAll() {
return getManager().find(User);
}
@Get("/users/:id")
getAll(@Param("id") userId: number) {
return getRepository(User).findOne(userId);
}
}