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 에서 자세히 확인할 수 있다. 

 

'알아보기' 카테고리의 다른 글

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

+ Recent posts