[!NOTE] Realm は Atlas Device SDK になりました -詳細はこちら
Realm は、電話、テーブル、またはアイテム内で直接実行されるモバイル データベースです。 このプロジェクトは、JavaScript Typescriptの およびRealm の実装をホストします。現在、React Native(iOS および Android の JSC およびCluster)、Node.js および Electron(Windows、MacOS、および Linux)をサポートしています。
Atlas Device SDKは、言語とプラットフォームに固有の SDK のコレクションであり、それぞれがモバイルおよびエッジ デバイスでのデータ アクセスと永続性のために最適化されたアプリ開発ツールのスイートを備えています。 SDK を使用して、データに基づくモバイル、エッジ、ウェブ、デスクトップ、IoT アプリを構築します。
Realm データベースを Atlas Device SDK の永続層と考えると便利な場合があります。
Atlas Device SDKNode.js 用 およびAtlas Device SDK 用の AtlasReact Native Device SDK を使用するための詳細な手順については、Docs を参照してください。現在、Node.js バージョン 18 以降のみがサポートされていることに注意してください。 React Native ユーザー向けに、サポートされているバージョンを示す互換性マトリックスがあります。
React Native 用の Atlas Device SDK のドキュメントは、 mongodb.com/ja-jp/docs/atlas/device-sdks/sdk/react-native/にあります。 Atlas Device SDK for Node.js のドキュメントは、 mongodb.com/ja-jp/docs/atlas/device-sdks/sdk/node/にあります。
API リファレンスはmongodb.com/java-j/docs/realm-sdks/js/latest/にあります。
React Native を使用している場合は、Realm の操作を容易にするための React フックを提供する@realm/react
の README もご覧ください。
Typescriptは静的型を提供するため、Plain JavaScriptの一般的な代替手段です。 Typescriptのサポートは 2 つの部分で構成されています
@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 との統合を容易にできます。
Typescriptの使用を開始するために役立つRealm テンプレートがあります。目的のテンプレートへのリンクに従い、それらの指示に従って高速に起動して実行します。
詳しくは、 CONTRIBUTING.mdを参照してください。
ソースから SDK を構築する手順については、 build.mdファイル を参照してください。
Realm をインストールして実行すると、エラーCould not find the Realm binary
が発生する可能性があります。 以下に、その問題を解決するためのヒントをいくつか示します。
サポートされているバージョンのnode
、 react-native
、またはexpo
と互換性のあるバージョンのrealm
を実行していることを確認するには、 COMPATIBILITY.md
を参照してください。
通常、このエラーは pod の依存関係が更新されていない場合に発生します。 次のコマンドを実行してみてください。
npx pod-install
それがまだ解決しない場合は、ビルドまたはポッドの依存関係にキャッシュ エラーが発生している可能性があります。 これらのキャッシュを安全にクリアするには、次のコマンドを使用できます。
rm -rf ios/Pods
rm ios/Podfile.lock
rm -rf ~/Library/Developer/Xcode/DerivedData
その後、ポッドを再インストールしてもう一度お試しください。 これがまだ動作しない場合は、 prebuilds/apple/realm-core.xcframework
ディレクトリが存在し、使用しているプラットフォームとアーキテクチャ用のバイナリが含まれていることを確認してください。 これが欠落している場合は、 realm
npm パッケージと CocoaPods を再インストールしてみてください。
これは、 realm
をインストールし、クリーン ビルドを実行していない場合に発生する可能性があります。 キャッシュをクリアするには、次のコマンドを使用できます。
cd android
./gradlew clean
その後、Android 用に再ビルドしてみてください。 まだ問題が発生している場合は、 node_moduels/realm/react-native/android/src/main/jniLibs
に Realm バイナリが含まれていることを確認してください。 これが欠落している場合は、 realm
npm パッケージを再インストールしてみてください。
Explorer を使用している場合、よくある方法で、 expo-dev-client
をインストールせず、開発クライアント固有のスクリプトを使用してエクスポート で React Native プロジェクトをビルドおよび実行することが挙げられます。 開発クライアントを使用すると、Realm などのサードパーティ ライブラリを含むローカル バージョンの Explorer Go を作成できます。 エクスポート プロジェクトで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
を実行すると、検出アーキテクチャの Realm バイナリがnode_modules/realm/prebuilds
にダウンロードされます。 このディレクトリが欠落しているか空である場合は、インストール時にネットワークの問題が報告されていないことを確認してください。
は、Realm にインストール情報を非同期に送信します。
この操作を行う理由は、次のとおりです。 つまり、より優れた製品を構築するのに役立つためです。 どのデータもユーザー、従業員、アプリという個人を特定するデータはありませんが、使用言語、対象となるNode.js のバージョンなどを理解するのに役立ちます。 この情報を持っていると、時間を優先して、新しい機能を追加し、古い機能を廃止することができます。 匿名化されたアプリケーション パスと匿名化されたマシン識別子を収集することは、他のメトリクスの実際の使用量を正確にカウントする 唯一の 方法です。 報告された情報を重複させない限り、使用はできません。単一の開発者npm install
が同じアプリを 10 回実行すると、1 回だけインストールする別の開発者よりも 10 回以上報告され、データがすべて返されます。でも意味がありません。 必要な場合を除き、データの共有を好みません。当社はそれを取得し、これを追加することについて長期間にわたってディスカッションしました。 このデータを Realm に送信しないという条件が絶対にない場合は、 REALM_DISABLE_ANALYTICS
という名前の env 変数を設定できます。
現在、次の情報が報告されています。
さらに、実行時に使用する可能性のあるファイルには、さまざまな定数を条件付きで書き込みます。
このプロジェクトは、 MongoDB の行動規範 に準拠しています。 参加することで、このコードをサポートすることが期待されます。 受け入れられない動作はCommunity-construct@mongodb.comに報告してください。
Realm JavaScriptとRealm CoreはApacheライセンス 2.0 で公開されています。
Realm を使用しており、それが満足のいくものであれば、Atlas の考えを共有するために@realmを使用してアカウントを送信することを検討してください
また、それが望ましくない場合は、改善点をぜひお知らせください。そうすれば、修正できます。
contrib.locksで作成されたものです。
TypeDocを使用して生成