Realm JavaScript - v12.11.1

[!NOTE] Realm は Atlas Device SDK になりました -詳細はこちら

MongoDB が提供するRealm

Realm データベース

Realm は、電話、テーブル、またはアイテム内で直接実行されるモバイル データベースです。 このプロジェクトは、JavaScript Typescriptの およびRealm の実装をホストします。現在、React Native(iOS および Android の JSC およびCluster)、Node.js および Electron(Windows、MacOS、および Linux)をサポートしています。

Atlas Device SDK とは

Atlas Device Sync

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 および Node.js 用の Atlas Device SDK

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モデル

Typescriptは静的型を提供するため、Plain JavaScriptの一般的な代替手段です。 Typescriptのサポートは 2 つの部分で構成されています

  • 正確な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 との統合を容易にできます。

テンプレート アプリ

Typescriptの使用を開始するために役立つRealm テンプレートがあります。目的のテンプレートへのリンクに従い、それらの指示に従って高速に起動して実行します。

サポートを受けるには

  • コードのサポートが必要な場合: #realm タグで以前の質問を検索するか、新しい質問をします 。 また、 のコミュニティフォーラムもご覧ください。ここでは、操作方法に関する一般的な質問がディスカッションされています。
  • 報告するバグはありますか。 問題 を開きます。 可能であれば、Realm のバージョン、完全なログ、Realm ファイル、問題を表示するプロジェクトを含めます。
  • 機能リクエストをお持ちの場合 問題 を開きます。 機能によって実行される操作と、その機能が必要な理由を伝えてください。

貢献

詳しくは、 CONTRIBUTING.mdを参照してください。

既知の問題点

  • Realm はレガシーの Chrome デバガーと互換性がありません。 次のデバッグ メソッドがサポートされています。
    • ヘルパーは、最新の React Native アプリをデバッグするのに推奨される方法です。
    • 参照iOS 。
    • 注:上記のメソッドでは、デバッグ メニューでDebug with Chromeを有効にする必要はありません。

SDK の構築

ソースから SDK を構築する手順については、 build.mdファイル を参照してください。

欠落しているバイナリのトラブルシューティング

Realm をインストールして実行すると、エラーCould not find the Realm binaryが発生する可能性があります。 以下に、その問題を解決するためのヒントをいくつか示します。

互換性

サポートされているバージョンのnodereact-native 、またはexpoと互換性のあるバージョンのrealmを実行していることを確認するには、 COMPATIBILITY.mdを参照してください。

React Native

iOS

通常、このエラーは 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 を再インストールしてみてください。

Android

これは、 realmをインストールし、クリーン ビルドを実行していない場合に発生する可能性があります。 キャッシュをクリアするには、次のコマンドを使用できます。

cd android
./gradlew clean

その後、Android 用に再ビルドしてみてください。 まだ問題が発生している場合は、 node_moduels/realm/react-native/android/src/main/jniLibsに Realm バイナリが含まれていることを確認してください。 これが欠落している場合は、 realm npm パッケージを再インストールしてみてください。

Expo

Explorer を使用している場合、よくある方法で、 expo-dev-clientをインストールせず、開発クライアント固有のスクリプトを使用してエクスポート で React Native プロジェクトをビルドおよび実行することが挙げられます。 開発クライアントを使用すると、Realm などのサードパーティ ライブラリを含むローカル バージョンの Explorer Go を作成できます。 エクスポート プロジェクトで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を実行すると、検出アーキテクチャの Realm バイナリがnode_modules/realm/prebuildsにダウンロードされます。 このディレクトリが欠落しているか空である場合は、インストール時にネットワークの問題が報告されていないことを確認してください。

分析

は、Realm にインストール情報を非同期に送信します。

この操作を行う理由は、次のとおりです。 つまり、より優れた製品を構築するのに役立つためです。 どのデータもユーザー、従業員、アプリという個人を特定するデータはありませんが、使用言語、対象となるNode.js のバージョンなどを理解するのに役立ちます。 この情報を持っていると、時間を優先して、新しい機能を追加し、古い機能を廃止することができます。 匿名化されたアプリケーション パスと匿名化されたマシン識別子を収集することは、他のメトリクスの実際の使用量を正確にカウントする 唯一の 方法です。 報告された情報を重複させない限り、使用はできません。単一の開発者npm installが同じアプリを 10 回実行すると、1 回だけインストールする別の開発者よりも 10 回以上報告され、データがすべて返されます。でも意味がありません。 必要な場合を除き、データの共有を好みません。当社はそれを取得し、これを追加することについて長期間にわたってディスカッションしました。 このデータを Realm に送信しないという条件が絶対にない場合は、 REALM_DISABLE_ANALYTICSという名前の env 変数を設定できます。

現在、次の情報が報告されています。

  • インストールされている Realm のバージョン。
  • 使用されている OS のプラットフォームとバージョン。
  • JavaScript フレームワーク(現在は React Native と Electron )が使用されている場合、およびそのバージョン。
  • どの JavaScript エンジンが使用されているか。
  • Node.js のバージョン番号。
  • 使用する場合はTypescriptのバージョン。
  • その他の情報を集計するための匿名マシン識別子とハッシュされたアプリケーション名。

さらに、実行時に使用する可能性のあるファイルには、さまざまな定数を条件付きで書き込みます。

行動規範

このプロジェクトは、 MongoDB の行動規範 に準拠しています。 参加することで、このコードをサポートすることが期待されます。 受け入れられない動作はCommunity-construct@mongodb.comに報告してください。

ライセンス

Realm JavaScriptとRealm CoreはApacheライセンス 2.0 で公開されています。

フィードバック

Realm を使用しており、それが満足のいくものであれば、Atlas の考えを共有するために@realmを使用してアカウントを送信することを検討してください

また、それが望ましくない場合は、改善点をぜひお知らせください。そうすれば、修正できます。

コントリビューター

contrib.locksで作成されたものです。

TypeDocを使用して生成