이번에 프로젝트가 아닌 개별 스크립트를 처음 작성하면서 익숙하지 않았던 부분들을 정리한다.
import {createConnection} from "typeorm";
const connection = await createConnection({
type: "mysql",
host: "localhost(or 127.0.0.1)",
port: 3306,
username: "username",
password: "password",
database: "database",
});
getConnection()
함수 사용 가능ormconfig.json
을 통한 연결도 가능ConnectionManager
을 이용한 방법도 존재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);
}
}
Connection
or EntityManager
이용getManager
or manager from connection) 사용 시, 문제가 생길 수 있음import {getConnection, getManager} from "typeorm";
// 1. Connection 이용
await getConnection().transaction(async transactionalEntityManager => {
});
// 2. EntityManager 이용
await getManager().transaction(async transactionalEntityManager => {
});
startTransaction()
, commitTransaction()
, rollbackTransaction()
, release()
const { odd, even } = require ('typeorm');
// ...
// 방법 1: 하나의 객체만 내보낼 경우
module.exports = checkOddOrEven;
// 방법 2: 여러 개의 객체를 내보낼 경우 (exports 속성으로 할당)
exports.checkOddOrEven = { ... };
exports.checkOddOrEven2 = { ... };
Babel
같은 ES6 코드를 변환해주는 도구(transpile) 없이는 사용 불가node_modules
에 설치된 모듈을 불러올 때에는, 경로 설정할 필요 없음import { odd, even } from 'typeorm';
// ...
// 방법 1: 하나의 객체만 내보낼 경우
export default checkOddOrEven;
// 방법 2: 여러 개의 객체를 내보낼 경우
export { checkOddOrEven, checkOddOrEven2 };
- import ... from '...' 사용시, 오류가 나는 경우
- 관련 경고 메세지
(node:7897) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
SyntaxError: Cannot use import statement outside a module
- 원인
- 노드 모듈을 포함하는 파일은.mjs
이거나
- pacakage.json 파일에"type": "module"
표기되어야 함