2019년 11월 22일 기준
Realm을 활용할 수 있는 가이드는 아래의 링크에 상세하게 잘나와있기 때문에 실제 개발 예제에 따라 어떤 방식으로 사용할 수 있는지 알아보려 한다.
Realm Javascript 한글 공식 가이드
요구사항
1. Lines 라는 그룹에 사용자를 화면이 로딩 될 때 추가한다.
2. 버튼을 이용해 추가한 사용자를 가져온다.
3. 중복 사용자는 저장되면 안된다.
위의 요구사항를 위해서 아래와 같이 코드를 작성해보았다.
import React, { Component} from 'react';
import { View, Text, Button, TextInput } from 'react-native';
const Realm = require('realm');
class DBSample extends Component {
constructor(props){
super(props);
this.realm = {};
this.state = {
formData : {
userId : "",
userPwd : "",
position : ""
}
}
this.createLinesSchema();
}
createLinesSchema = () => {
const LineSchema = {
name : 'LineUser',
properties : {
userId : 'string',
userPwd : 'string',
position : 'string?'
}
}
this.realm = new Realm({schema : [ LineSchema ]});
this.realm.write( () => {
const LineUser = this.realm.create('LineUser', {
userId : "admin",
userPwd : "admin@1234"
});
LineUser.position = "Manager";
});
}
searchUserData = () => {
const cars = this.realm.objects("LineUser").filtered("userId == 'admin'");
this.setState({ formData : cars[0]});
}
handleInputData = ( value, field ) => {
let formData = this.state.formData;
formData[field] = value;
this.setState({ formData : formData});
}
render() {
return (
Home Screen
this.props.navigation.navigate('Home')}
/>
{ this.handleInputData(value, "userid") } } >
{ this.handleInputData(value, "userpwd") } } >
{ this.handleInputData(value, "position") } } >
);
}
}
export default DBSample;
위에서 사용된 Realm의 기본적인 함수들에 대해서 알아보면,
Lines 24 :
- Realm에 등록할 Model을 설정한다.
우리가 데이터를 저장할 Table이라고 생각해도 되며
Lines 25의 name은 Realm으로 부터 Model을 꺼내 데이터를 저장, 삭제, 수정할 수 있는 Key되는 명칭이다.
Lines 26 부터는 Model에서 사용할 Property를 지정하는데, Table의 Field라고 생각하면 되며, Field에 지정하는 Not Null, Nullable, Default Value, Primary Key , Type 등을 지정할 수 있다. 다만 데이터 타입으로 올 수 있는 것이 좀더 확장된다고 생각해도 좋을 것 같다.
Lines 34 :
- Realm 연결하기
> Realm의 새로운 객체를 생성 후 반환하다. 만약 Realm 이 아예 생성되어 있지않다면 새로 생성할 것이며, 이미 존재한다면 존재하는 Realm 객체를 반환할 것이다.
Lines 36 :
- 쓰기 트랜잭션을 사용하기 위해서 callback 메서드를 제공하는데, 동기적으로 호출 된다.
Lines 37 :
- 정의한 데이터 타입과 속성에 맞는 새로운 Realm 객체를 생성한다.
Lines 42 :
- Realm 오브젝트에 대해서 업데이트를 처리한다.
Lines 47 :
- Realm 안에 등록되어 있는 type의 모든 오브젝트를 반환한다.
- realm.objects로 부터 시작해 데이터를 조회 하고 정렬하는 등의 다양한 작업을 지원할 수 있으며, 메서드 체인으로 호출이 가능합니다.
위에서 사용된 함수들은
new Realm(config)
write(callback)
create(type, properties, update) -> Realm.Object
objects(type) -> Realm.Results
filtered(query, arg) -> Realm.Results
이었다.
위의 함수들외에도 Realm에서 제공하는 Realm API Docs 에서 자세히 확인할 수 있다.