ORM(9)
-
Type ORM 알아보기 [NestJS]
TypeORM은 TS와 JS에서 사용할 수 있는 객체 관계 매핑(ORM) 라이브러리 중 하나이다. ORM은 데이터베이스와의 상호작용을 추상화하여 개발자가 객체 지향 프로그래밍 스타일을 사용하여 데이터베이스와 상호 작용할 수 있게 해준다. Column Annotation PrimaryGeneratedColumn 해당 필드를 기본 키로 사용하며, 자동으로 생성되는 숫자 형태의 값이다. 주로 순차적인 정수 값을 기본키로 사용할 때 활용된다. // @PrimaryGeneratedColumn() 은 자동으로 id 를 생성한다. // 1, 2, 3, 4, 5 -> 순서대로 id 값이 올라간다. // @PrimaryGeneratedColumn('uuid') // asd1rf123f-213dsaf3-123asdbe-o..
2023.12.15 -
TypeORM 함수 with NestJS
@Injectable() export class PostsService { constructor( @InjectRepository(PostsModel) private readonly postsRepository: Repository, ) {} //... } find 다수의 데이터 가져오기 async getAllPosts() { return this.postsRepository.find(); } findOne 하나의 데이터 찾기 async getPostById(id: number) { const post = await this.postsRepository.findOne({ where: { id, }, }); if (!post) { throw new NotFoundException(); } return po..
2023.12.14 -
Sequelize 관계 쿼리
include 우리가 SQL 에서 관계 있는 테이블을 불러올 때는 JOIN 을 사용하여 원하는 데아터를 가지고 왔다. 시퀄라이즈에서는 include 를 사용한다. 관계가 있는 모델을 include 에 배열을 넣어주면 된다. → 배열인 이유는 다양한 모델과 관계가 있을 수 있기 때문 const findPosts = await Posts.findAll({ // 컬럼 나열 attributes: ['postId', 'userId', 'title', 'createdAt', 'updatedAt'], include: [ { model: Users, // posts에 없는 컬럼을 join을 통해 가져오기 attributes: ['nickname'], // nickname 가져오기 }, ], order: [['creat..
2023.07.09 -
Sequelize CRUD 쿼리
테이블 조회 FindAll 쿼리 결과를 배열 객체로 반환 모든 데이터를 조회하고 싶으면 findAll 메서드를 사용 const { User } = require('./models'); // users테이블 전체를 조회해서 그 결과값을 객체로 만들어 user변수에 넣어준다. const user = User.findAll({}); // user변수에는 조회된 결과 객체가 들어있어서, 해당 테이블 컬럼들을 조회할수 있다. console.log(user[0].comment) // findAll는 여러 행들을 조회하기에, 각 행들이 배열로 저장되어있다. // 따라서 배열 인덱스로 조회한다. 첫번째 행 users테이블에 comment필드를 조회하기 FindOne 쿼리 결과를 객체로 반환 테이블의 데이터를 하나만 가..
2023.07.09 -
Sequelize 관계 정의하기
테이블 간의 관계에는 1:N, 1:1, N:M 이 있다. 1:N 사용자 모델은 게시글 모델과 1:N 관계를 가지고 있다. 모델의 1:N 관계를 설정할 때는 model.hasMany, model.belongsTo 2가지의 메서드를 사용한다. 만약 모델 간의 관계를 설정한 경우 foreignKey 에 해당하는 컬럼이 belongsTo 메서드를 사용하는 모델에 생성되게 된다. /* user.js */ static associate(db) { db.User.hasMany(db.Comment, { foreignKey: 'commenter', sourceKey: 'id', onDelete: 'cascade', onUpdate: 'cascade' }); // db.User (hasMany) db.Comment = 1..
2023.07.09 -
Sequelize Model
model 은 특정 table 과 column 의 속성값을 입력하여, MySQL 과 express 프로젝트를 연결시켜준다. 'use strict'; const { Model } = require('sequelize'); /** * @param {import("sequelize").Sequelize} sequelize - Sequelize * @param {import("sequelize").DataTypes} DataTypes - Sequelize Column DataTypes * @return {Model} - Sequelize Model * **/ module.exports = (sequelize, DataTypes) => { class Posts extends Model { /** * Helper ..
2023.07.09