참고 Realm은 이제 Atlas Device SDK입니다. - 자세히 알아보기
Realm은 휴대폰, 정제 또는웨어러블 내부에서 직접 실행되는 mobile database입니다. 이 프로젝트는 Realm의 JavaScript & TypeScript 구현을 호스팅합니다. 현재 React Native(iOS 및 Android에서는 JSC & Hermes), Node.js 및 Electron(Windows, MacOS, Linux에서)을 지원합니다.
Atlas Device SDKs 는 언어 및 플랫폼별 SDKs collection으로, 각 SDK에는 모바일 및 엣지 디바이스의 데이터 액세스 및 지속성에 최적화된 앱 개발 도구 모음이 포함되어 있습니다. SDK를 사용하여 데이터 중심의 모바일, 엣지, 웹, 데스크톱 및 IoT 앱을 빌드하세요.
Realm 데이터베이스를 Atlas Device SDKs의 지속성 계층으로 생각하면 도움이 될 수 있습니다.
Node.js용 Atlas Device SDK 및 React Native용 Atlas Device SDK를 사용하려면 문서의 자세한 지침을 참조하세요. 현재 Node.js 버전 18 이상만 지원됩니다. React Native 사용자를 위해 지원되는 버전을 보여주는 호환성 매트릭스 가 있습니다.
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 는 정적 타이핑을 제공하기 때문에 순수 JavaScript의 인기 있는 대안입니다. 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용 Atlas Device SDK는 객체의 지속성 및 지속형 객체에 대한 고급 쿼리를 제공합니다. @realm/react
을(를) 사용하면 React Native와 더 쉽게 통합할 수 있습니다.
Realm 사용을 시작하는 데 도움이 되는 TypeScript 템플릿이 있습니다. 원하는 템플릿으로 연결되는 링크를 따라 이동한 다음 해당 지침에 따라 빠르게 시작하고 실행할 수 있습니다.
자세한 내용은 CONTRIBUTING.md 를 참조하세요!
Debug with Chrome
를 활성화할 필요가 없습니다.소스에서 SDK를 빌드하는 방법에 대한 지침은 build.md 파일을 참조하세요.
Realm을 설치하고 실행한 후 Could not find the Realm binary
오류가 발생할 수 있습니다. 다음은 이를 위한 몇 가지 팁입니다.
COMPATIBILITY.md
을(를) 참조하여 지원되는 node
, react-native
또는 expo
버전과 호환되는 realm
버전을 실행하고 있는지 확인하세요.
일반적으로 이 오류는 파드 종속성이 업데이트되지 않았을 때 발생합니다. 다음 명령을 실행 해 보세요.
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를 다시 설치해 보세요.
이 문제는 realm
를 설치하고 클린 빌드를 수행하지 않을 때 발생할 수 있습니다. 다음 명령을 사용하여 캐시를 지울 수 있습니다.
cd android
./gradlew clean
이후 Android용으로 다시 빌드해 봅니다. 그래도 문제가 발생하면 node_moduels/realm/react-native/android/src/main/jniLibs
에 아키텍처에 대한 영역 바이너리가 포함되어 있는지 확인하세요. 이 항목이 누락된 경우 realm
npm 패키지를 다시 설치해 보세요.
Expo를 사용하는 경우, 일반적인 위험은 expo-dev-client
를 설치하지 않고 개발 클라이언트 전용 스크립트를 사용하여 Expo에서 React Native 프로젝트를 빌드하고 실행하지 않는다는 것입니다. 개발 클라이언트를 사용하면 Realm과 같은 타사 라이브러리를 포함하는 Expo Go의 로컬 버전을 만들 수 있습니다. Expo 프로젝트에서 realm
을(를) 사용하려는 경우 다음 단계가 도움이 될 수 있습니다.
expo-dev-client
을(를) 설치합니다.npm install expo-dev-client
npx expo run:ios
npx expo run:android
npx expo start --dev-client
npm install realm
를 실행하면 감지된 아키텍처에 대한 영역 바이너리가 node_modules/realm/prebuilds
에 다운로드됩니다. 이 디렉토리가 누락되었거나 비어 있는 경우 설치 시 보고된 네트워크 문제가 없는지 확인합니다.
설치 정보를 Realm에 비동기적으로 제출합니다.
이 작업을 수행하는 이유는 무엇인가요? 더 나은 제품을 만드는 데 도움이 되기 때문입니다. 그 어떤 데이터도 귀하, 귀하의 회사 또는 귀하의 앱을 개인적으로 식별하지 않지만, 귀하가 사용하는 언어, 대상으로 하는 Node.js 버전 등을 이해하는 데 도움 이 될 것입니다 . 이 정보가 있으면 시간의 우선 순위를 지정하고, 새로운 기능을 추가하고, 이전 기능을 더 이상 사용하지 않는 데 도움이 됩니다. 익명화된 애플리케이션 경로와 익명화된 시스템 식별자를 수집하는 것은 다른 지표의 실제 사용량을 정확하게 계산할 수 있는 유일한 방법입니다. 보고된 정보를 중복 제거할 방법이 없다면 단일 개발자 npm install
가 동일한 앱을 10번 실행하면 한 번만 설치하는 다른 개발자보다 10배 더 많은 보고를 하게 되어 데이터가 모두 유출되므로 소용이 없습니다. 하지만 소용이 없습니다. 필요한 경우가 아니라면 데이터 공유를 좋아하는 사람은 없으며, 이를 추가하는 것에 대해 오랫동안 논의했습니다. 이 데이터를 Realm으로 다시 전송하지 않아야 하는 경우라면 REALM_DISABLE_ANALYTICS
이라는 이름의 환경 변수를 설정할 수 있습니다.
현재 다음과 같은 정보가 보고됩니다:
또한 런타임에 사용할 수 있는 다양한 상수를 파일에 무조건적으로 씁니다.
이 프로젝트는 MongoDB 행동 강령 을 준수 합니다. 참여하면 이 강령을 준수하게 됩니다. 용납할 수 없는 행동을 커뮤니티 -컨덕트@mongodb.com으로 신고해 주세요.
Realm JS와 Realm Core 는 Apache 라이선스 2.0에 따라 게시됩니다.
Realm을 사용하고 있고 만족하신 다면 @realm 을 언급하는 트윗을 보내 생각을 공유해 보시기 바랍니다.
그리고 이 점이 마음에 들지 않는다면 개선했으면 하는 점을 알려주세요. 그러면 문제를 해결할 수 있습니다!
contrib.locks 로 제작되었습니다.
TypeDoc을 사용하여 생성됨