스키마는 데이터베이스의 구조와 제약 조건을 정의하는 역할을 합니다. 즉, 데이터베이스에 저장되는 데이터에 대한 유효성 검사를 수행하여 잘못된 데이터가 저장되지 않도록 보장합니다.
RxDB 스키마는 JSON 객체로 정의됩니다. 각 속성은 데이터베이스에 저장될 필드를 나타내며, 해당 필드에 대한 유형, 기본값, 밸리데이션 규칙 등을 설정할 수 있습니다. 밸리데이션 규칙을 통해 데이터가 특정 조건을 충족하는지 확인할 수 있습니다.
예를 들어, 사용자 컬렉션을 위한 스키마를 작성해보겠습니다.
const userSchema = {
title: 'User Schema',
version: 0,
type: 'object',
properties: {
name: {
type: 'string',
minLength: 1,
maxLength: 50,
required: true
},
age: {
type: 'integer',
minimum: 0,
maximum: 150,
required: true
},
email: {
type: 'string',
format: 'email',
required: true
}
}
};
위의 예제에서는 name, age, email 필드를 갖는 사용자 스키마를 정의하였습니다. 각 필드에는 유효성 검사를 위한 속성들이 포함되어 있습니다. 예를 들어, name 필드는 최소 1자, 최대 50자의 문자열이어야 하며, age 필드는 0 이상 150 이하여야 합니다. email 필드는 이메일 주소 형식을 따라야 합니다.
이제 스키마를 사용하여 데이터베이스에서 데이터를 저장할 때 밸리데이션을 수행할 수 있습니다. 다음은 예제 코드입니다.
import RxDB from 'rxdb';
RxDB.plugin(require('pouchdb-adapter-idb')); // 브라우저 환경에서 사용하는 PouchDB 어댑터
(async function() {
const db = await RxDB.create({
name: 'mydb',
adapter: 'idb' // 브라우저 환경에서 사용하는 PouchDB 어댑터
});
const collection = await db.collection({
name: 'users',
schema: userSchema
});
// 데이터 저장
const newUser = {
name: 'John Doe',
age: 25,
email: 'johndoe@example.com'
};
await collection.insert(newUser);
// 잘못된 데이터 저장 시 에러 처리
const invalidUser = {
name: '',
age: -10,
email: 'invalidemail'
};
try {
await collection.insert(invalidUser);
} catch (error) {
console.error('Invalid user:', error);
}
})();
위의 예제 코드에서는 RxDB를 사용하여 데이터베이스를 생성하고, users
컬렉션을 생성해서 스키마를 적용합니다. collection.insert()
메서드를 통해 데이터를 저장할 때 스키마에 정의된 밸리데이션 규칙에 따라 유효성을 체크합니다. 저장하려는 데이터가 유효하지 않은 경우, collection.insert()
메서드에서 에러가 발생합니다.
이렇게 RxDB의 스키마 기능을 활용하여 데이터의 밸리데이션과 제약 조건을 처리할 수 있습니다. 자세한 내용은 RxDB의 공식 문서와 예제 코드를 참조하시기 바랍니다.