반응형
백엔드 프레임워크
DB와 상호작용하는 응용 프로그램을 만들 때 처음엔 타입을 갖지 않는 SQL 또는 API 호출을 그대로 사용했을 것입니다.
// node-postgres를 이용한 PostgreSQL
let client = new Client
let res = await client.query(
'SELECT name FROM members where mId = $2',
[123456]
) // any
// node-mongodb-native를 이용한 MongoDB
db.collection('members')
.find({mId: 123456})
.toArray((err, member) =>
// member는 any
)
수동으로 타입을 추가하면 대부분의 any를 제거하면서 더 안전한 API로 개선할 수 있습니다.
db.collection('members')
.find({mId: 123456})
.toArray((err, member: Member) =>
// member는 any
)
하지만 SQL API 자체는 여전히 상당히 저수준이므로 순식간에 잘못된 타입을 사용하거나 타입 지정을 깜빡해서 any로 되기 쉽습니다.
객체 관계 매퍼인 ORM(Object-Relational Mapper)를 사용하면 이 문제를 해결할 수 있습니다.
ORM은 DB 스키마로부터 코드를 만들어 질의, 갱신, 삭제 등의 작업을 할 수 있는 고수준의 API를 제공합니다.
정적 타입 언어를 사용한다면 ORM API가 타입 안전성을 제공해 주므로 타입을 잘못 지정하거나 제네릭 타입 매개변수를 수동으로 한정할 걱정을 할 필요가 없습니다.
TypeScript로 DB처리할 때는 ORM을 사용할 것을 권합니다.
다음은 TypeORM을 이용하여 사용자의 이름을 얻는 모습입니다.
let member = await MemberRepository
.findOne({mId: 123456}) // Member | undefined
ORM은 일반적인 안전성과 타입 안전성을 기본으로 제공하는 고수준 API라는 사실에 주목해야 합니다.
그러니 DB를 사용할 땐 항상 ORM을 사용하도록 합시다.
반응형
'👶 TypeScript' 카테고리의 다른 글
프론트엔드 프레임워크 - 리액트 (0) | 2023.01.27 |
---|---|
프론트엔드 프레임워크와 백엔드 프레임워크 (0) | 2023.01.26 |
비동기 스트림 (0) | 2023.01.24 |
JavaScript의 이벤트 루프 (0) | 2023.01.24 |
콜백(callback) 사용하기 (0) | 2023.01.24 |