Realm JavaScript - v12.11.1

참고 Realm은 이제 Atlas Device SDK입니다. - 자세히 알아보기

영역 by MongoDB

Realm 데이터베이스

Realm은 휴대폰, 정제 또는웨어러블 내부에서 직접 실행되는 mobile database입니다. 이 프로젝트는 Realm의 JavaScript & TypeScript 구현을 호스팅합니다. 현재 React Native(iOS 및 Android에서는 JSC & Hermes), Node.js 및 Electron(Windows, MacOS, Linux에서)을 지원합니다.

Atlas Device SDKs란 무엇인가요?

Atlas Device Sync

Atlas Device SDKs 는 언어 및 플랫폼별 SDKs collection으로, 각 SDK에는 모바일 및 엣지 디바이스의 데이터 액세스 및 지속성에 최적화된 앱 개발 도구 모음이 포함되어 있습니다. SDK를 사용하여 데이터 중심의 모바일, 엣지, 웹, 데스크톱 및 IoT 앱을 빌드하세요.

Realm 데이터베이스를 Atlas Device SDKs의 지속성 계층으로 생각하면 도움이 될 수 있습니다.

기능

  • 모바일 우선: Realm은 처음부터 휴대폰, 정제,웨어러블 내부에서 직접 실행되도록 구축된 최초의 데이터베이스입니다.
  • 단순성: 데이터가 객체로 직접 노출 되고 코드로 쿼리 할 수 있으므로 성능 및 유지 관리 문제로 가득 찬 ORM이 필요하지 않습니다.
  • 모던: 데이터베이스가 관계, 제네릭 및 벡터화를 지원합니다.
  • 빠름: 매우 풍부한 기능 세트를 유지하면서 일반적인 작업에서 원시 SQLite보다 빠릅니다.
  • MongoDB Atlas Device Sync: 사용자, 디바이스, 백엔드 간에 데이터를 실시간으로 동기화하고 간단하게 유지할 수 있습니다. 템플릿 애플리케이션 으로 무료로 시작 하고 cloud 백엔드를 생성하세요.

시작하기

Node.js용 Atlas Device SDK 및 React Native용 Atlas Device SDK를 사용하려면 문서의 자세한 지침을 참조하세요. 현재 Node.js 버전 18 이상만 지원됩니다. React Native 사용자를 위해 지원되는 버전을 보여주는 호환성 매트릭스 가 있습니다.

문서

React Native 및 Node.js용 Atlas Device SDKs

React Native용 Atlas Device SDK에 대한 설명서는 mongodb.com/ko-kr/docs/atlas/device-sdks/sdk/react-native/ 에서 찾을 수 있습니다. Node.js용 Atlas Device SDK에 대한 설명서는 mongodb.com/ko-kr/docs/atlas/device-sdks/sdk/node/ 에서 확인할 수 있습니다.

API 참고는 mongodb.com/ko-KR/docs/realm-sdks/js/latest/ 에 있습니다.

React Native를 사용하는 경우 Realm으로 더 쉽게 작업할 수 있도록 React 후크를 제공하는 @realm/react 에 대한 README도 살펴보세요.

TypeScript 모델

TypeScript 는 정적 타이핑을 제공하기 때문에 순수 JavaScript의 인기 있는 대안입니다. TypeScript 지원은 두 부분으로 구성됩니다.

  • 정확한 TypeScript 정의 @realm/babel-plugin 를 통해 TypeScript 클래스를 Realm 스키마로 변환합니다. 모델 클래스의 예는 다음과 같습니다.
class Task extends Realm.Object<Task, "description"> {
_id = new Realm.BSON.ObjectId();
description!: string;
@index
isComplete = false;

static primaryKey = "_id";

constructor(realm, description: string) {
super(realm, { description });
}
}

React Native와의 통합

React Native용 Atlas Device SDK는 객체의 지속성 및 지속형 객체에 대한 고급 쿼리를 제공합니다. @realm/react 을(를) 사용하면 React Native와 더 쉽게 통합할 수 있습니다.

템플릿 앱

Realm 사용을 시작하는 데 도움이 되는 TypeScript 템플릿이 있습니다. 원하는 템플릿으로 연결되는 링크를 따라 이동한 다음 해당 지침에 따라 빠르게 시작하고 실행할 수 있습니다.

도움말 얻기

  • 코드에 도움이 필요하세요?: 영역 태그 에서 이전 질문을 찾거나 새로운 질문을 할 수 있습니다. 작업 방법에 대한 일반적인 질문을 토론할 수 있는 커뮤니티 포럼 을 확인할 수도 있습니다.
  • 신고할 버그가 있나요? 이슈를 엽니 다. 가능하다면 Realm 버전, 전체 로그, Realm 파일, 문제를 보여주는 프로젝트를 포함하세요.
  • 기능을 요청하시나요? 이슈를 엽니 다. 이 기능으로 수행할 수 있는 작업과 해당 기능을 사용해야 하는 이유를 알려주세요.

기여

자세한 내용은 CONTRIBUTING.md 를 참조하세요!

알려진 문제

  • Realm은 레거시 Chrome 디버거와 호환되지 않습니다. 다음과 같은 디버깅 메서드가 지원됩니다:
    • Hermes Debugger 는 최신 React Native 앱을 디버깅하는 데 권장되는 방법입니다.
    • Safari 도 비슷한 기능 세트를 가지고 있지만 몇 가지 설정 이 필요하며 iOS에서만 디버깅을 지원합니다.
    • 참고: 위 방법의 경우 디버그 메뉴에서 Debug with Chrome 를 활성화할 필요가 없습니다.

SDK 빌드

소스에서 SDK를 빌드하는 방법에 대한 지침은 build.md 파일을 참조하세요.

누락된 바이너리 문제 해결

Realm을 설치하고 실행한 후 Could not find the Realm binary 오류가 발생할 수 있습니다. 다음은 이를 위한 몇 가지 팁입니다.

호환성

COMPATIBILITY.md 을(를) 참조하여 지원되는 node, react-native 또는 expo 버전과 호환되는 realm 버전을 실행하고 있는지 확인하세요.

React Native

iOS

일반적으로 이 오류는 파드 종속성이 업데이트되지 않았을 때 발생합니다. 다음 명령을 실행 해 보세요.

npx pod-install

그래도 도움이 되지 않는다면 빌드 또는 pod 종속성에 일부 캐싱 오류가 있을 수 있습니다. 다음 명령을 사용하여 이러한 캐시를 안전하게 지울 수 있습니다.

rm -rf ios/Pods
rm ios/Podfile.lock
rm -rf ~/Library/Developer/Xcode/DerivedData

그런 다음 pod를 다시 설치하고 다시 시도합니다. 그래도 문제가 해결되지 않으면 prebuilds/apple/realm-core.xcframework 디렉토리 가 존재하고 플랫폼 및 아키텍처에 맞는 바이너리가 포함되어 있는지 확인하세요. 이 항목이 누락된 경우 realm npm 패키지 와 CocoaPods를 다시 설치해 보세요.

Android

이 문제는 realm 를 설치하고 클린 빌드를 수행하지 않을 때 발생할 수 있습니다. 다음 명령을 사용하여 캐시를 지울 수 있습니다.

cd android
./gradlew clean

이후 Android용으로 다시 빌드해 봅니다. 그래도 문제가 발생하면 node_moduels/realm/react-native/android/src/main/jniLibs 에 아키텍처에 대한 영역 바이너리가 포함되어 있는지 확인하세요. 이 항목이 누락된 경우 realm npm 패키지를 다시 설치해 보세요.

Expo

Expo를 사용하는 경우, 일반적인 위험은 expo-dev-client 를 설치하지 않고 개발 클라이언트 전용 스크립트를 사용하여 Expo에서 React Native 프로젝트를 빌드하고 실행하지 않는다는 것입니다. 개발 클라이언트를 사용하면 Realm과 같은 타사 라이브러리를 포함하는 Expo Go의 로컬 버전을 만들 수 있습니다. Expo 프로젝트에서 realm 을(를) 사용하려는 경우 다음 단계가 도움이 될 수 있습니다.

  • expo-dev-client 을(를) 설치합니다.
    npm install expo-dev-client
    
  • iOS용 개발 클라이언트 빌드
    npx expo run:ios
    
  • Android용 개발자 클라이언트 빌드
    npx expo run:android
    
  • 빌드하지 않고 번들러 시작
    npx expo start --dev-client
    

Node/Electron

npm install realm 를 실행하면 감지된 아키텍처에 대한 영역 바이너리가 node_modules/realm/prebuilds 에 다운로드됩니다. 이 디렉토리가 누락되었거나 비어 있는 경우 설치 시 보고된 네트워크 문제가 없는지 확인합니다.

분석

설치 정보를 Realm에 비동기적으로 제출합니다.

이 작업을 수행하는 이유는 무엇인가요? 더 나은 제품을 만드는 데 도움이 되기 때문입니다. 그 어떤 데이터도 귀하, 귀하의 회사 또는 귀하의 앱을 개인적으로 식별하지 않지만, 귀하가 사용하는 언어, 대상으로 하는 Node.js 버전 등을 이해하는 데 도움 이 될 것입니다 . 이 정보가 있으면 시간의 우선 순위를 지정하고, 새로운 기능을 추가하고, 이전 기능을 더 이상 사용하지 않는 데 도움이 됩니다. 익명화된 애플리케이션 경로와 익명화된 시스템 식별자를 수집하는 것은 다른 지표의 실제 사용량을 정확하게 계산할 수 있는 유일한 방법입니다. 보고된 정보를 중복 제거할 방법이 없다면 단일 개발자 npm install가 동일한 앱을 10번 실행하면 한 번만 설치하는 다른 개발자보다 10배 더 많은 보고를 하게 되어 데이터가 모두 유출되므로 소용이 없습니다. 하지만 소용이 없습니다. 필요한 경우가 아니라면 데이터 공유를 좋아하는 사람은 없으며, 이를 추가하는 것에 대해 오랫동안 논의했습니다. 이 데이터를 Realm으로 다시 전송하지 않아야 하는 경우라면 REALM_DISABLE_ANALYTICS 이라는 이름의 환경 변수를 설정할 수 있습니다.

현재 다음과 같은 정보가 보고됩니다:

  • 설치 중인 Realm 버전.
  • 사용 중인 OS 플랫폼 및 버전입니다.
  • JavaScript 프레임워크(현재 React Native 및 Electron)를 사용하는지 여부와 해당 버전.
  • 사용 중인 JavaScript 엔진.
  • Node.js 버전 번호입니다.
  • 사용되는 경우 TypeScript 버전입니다.
  • 기타 정보를 집계할 익명의 컴퓨터 식별자 및 해시된 애플리케이션 이름입니다.

또한 런타임에 사용할 수 있는 다양한 상수를 파일에 무조건적으로 씁니다.

행동강령

이 프로젝트는 MongoDB 행동 강령 을 준수 합니다. 참여하면 이 강령을 준수하게 됩니다. 용납할 수 없는 행동을 커뮤니티 -컨덕트@mongodb.com으로 신고해 주세요.

라이선스

Realm JS와 Realm Core 는 Apache 라이선스 2.0에 따라 게시됩니다.

피드백

Realm을 사용하고 있고 만족하신 다면 @realm 을 언급하는 트윗을 보내 생각을 공유해 보시기 바랍니다.

그리고 이 점이 마음에 들지 않는다면 개선했으면 하는 점을 알려주세요. 그러면 문제를 해결할 수 있습니다!

기여자

contrib.locks 로 제작되었습니다.

TypeDoc을 사용하여 생성됨