2019년 11월 22일 기준
Realm을 활용할 수 있는 가이드는 아래의 링크에 상세하게 잘나와있기 때문에 실제 개발 예제에 따라 어떤 방식으로 사용할 수 있는지 알아보려 한다.
요구사항
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 에서 자세히 확인할 수 있다.
'알아보기' 카테고리의 다른 글
0004 Reactive Programming 2 (0) | 2019.12.05 |
---|---|
0004 Reactive Programming 1 (0) | 2019.12.04 |
0002 Realm 활용하기 2 (0) | 2019.11.22 |
0003 자바를 이용한 병렬 프로그래밍 1 (0) | 2019.11.20 |
0002 Realm 활용하기 1 (0) | 2019.11.20 |