빠른 참조

Modella 모델 치트시트

Modella 빠른 참조 가이드: 미니멀리스트 JavaScript 모델 프레임워크, 속성 정의, 유효성 검사, 생명주기 이벤트 및 플러그인.

· 게시일

[!NOTE] 아카이브 프로젝트 안내: Modella는 Node.js와 브라우저 환경을 위한 역사적인 미니멀 모델 프레임워크입니다. 최신 프로젝트에서는 Zod 또는 Prisma 사용을 권장합니다.

Modella는 플러그인을 통해 쉽게 확장할 수 있도록 설계된 초경량 데이터 모델링 라이브러리입니다.

모델 정의

const Modella = require('modella');
const validators = require('modella-validators');

const User = Modella('User')
  .attr('id')
  .attr('name')
  .attr('email', { required: true })
  .use(validators);

// 사용자 정의 유효성 검사 규칙
User.validate((user) => {
  if (!user.name()) {
    user.error('name', 'Name is required');
  }
});

모델 인스턴스 및 속성

// 인스턴스화
const user = new User({ name: 'Alice', email: '[email protected]' });

// 게터 및 세터
user.name();               // -> "Alice"
user.name('Bob');          // Sets name to "Bob"
user.set({ name: 'Charlie' });

// 상태 판별자 (Predicates)
user.has('name');          // -> true
user.isNew();              // -> true (not yet saved)
user.isValid();            // Runs sync validators -> true/false

생명주기 이벤트

// 영속성 이벤트
user.on('save', () => console.log('Saved'));
user.on('create', () => console.log('Created'));
user.on('remove', () => console.log('Removed'));

// 비동기 훅
user.on('saving', (instance, done) => {
  done();
});

// 속성 변경 이벤트
user.on('change', () => console.log('Attributes modified'));
user.on('change email', () => console.log('Email changed'));

플러그인 아키텍처

Modella 플러그인은 모델을 장식하는 고차 함수입니다:

const TimestampsPlugin = () => {
  return (Model) => {
    Model
      .attr('createdAt')
      .attr('updatedAt');

    Model.on('saving', (record, done) => {
      const now = new Date();
      if (record.isNew()) record.createdAt(now);
      record.updatedAt(now);
      done();
    });

    return Model;
  };
};

User.use(TimestampsPlugin());

참고자료

관련 주제