問題タブ [realm-object-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
669 参照

ios - インデックスなしでRealmオブジェクトサーバーのリアルタイム同期を使用することは可能ですか?

Realmの「タスク」サンプルアプリに実装されているリアルタイム同期を調べていました。

特に、このブロック:

基本的に、変更はインデックスを使用して伝達されます。これらのインデックスを使用して下層のモデル/レルム オブジェクトにアクセスするだけで、インターフェイスが更新されます。

現在、これと互換性がないように見えるアーキテクチャがあります。専用のデータベース レイヤー (レルムはその実装です) があり、そこでバックグラウンド スレッドにレルム オブジェクトをロードし、プレーンなモデル オブジェクトにマップします。このようにして、コードをデータベースの実装から切り離し、不変のモデルを使用できるようにします。

この場合、インデックスを処理する方法がわかりません。元のクエリを覚えて、もう一度やり直してから、これらのインデックスを使用して必要なエントリにアクセスする必要があるように見えますか? それは非常に非効率に聞こえます...

さらに、「フィールド y でステータス x を持つすべてのアイテム」などの特定のクエリでインデックスがどのように機能するかわかりません。受け取ったインデックスはこの特定のクエリを参照していますか?

ここで続行するための推奨される方法は何ですか?

編集:コメントを追加するために、カスタムサーバーとWebソケットを使用して同期機能を実装し、インデックスの代わりにセマンティックキーを使用しました(データベースへのクエリを回避するために完全なオブジェクトを送信することもありました)。このようにして、インデックスベースのアクセスによって生じる可能性のある不整合に対処する必要がありませんでした。そのようなことが可能であるか、ある時点でレルム同期で計画されているかどうか疑問に思います.

PS 私のカスタムサーバーは十分にテストされておらず、維持するのが非常に難しいため、レルム同期に切り替えるつもりです。これが可能であることを願っています。

0 投票する
1 に答える
700 参照

ios - 同期エラーの処理方法: 「不正な変更セットを受信しました: アサーションに失敗しました: left().link_target_table_ndx == right().link_target_table_ndx」

ログイン時にオブジェクト サーバー コンソールでこのエラーが発生し、同期できなくなりました。以前は同じユーザー アカウントが機能していました。

2016-12-13T13:20:52.858Z - エラー: 同期サーバー: 接続 [6]: セッション [1]: 受信した変更セットが正しくありません: アサーションに失敗しました: left().link_target_table_ndx == right().link_target_table_ndx (message_type='アップロード')

2016-12-13T13:20:52.858Z - 情報: 同期サーバー: 接続 [6]: セッション [1]: セッションが終了しました (session_ident=1)。

2016-12-13T13:20:52.858Z - 情報: 同期サーバー: 接続 [6]: 送信中: エラー (error_code=212、message_size=22、try_again=0、session_ident=1)

2016-12-13T13:20:52.859Z - 情報: 同期サーバー: 接続 [6]: クライアントによって接続が閉じられました: 入力の終わり

どういう意味ですか?どうすれば修正できますか?

編集:スキーマのバージョンを増やしてみたところ、次のようになりました:

重要: このエラーが表示された場合は、このログを help@realm.io に送信してください。

2016-12-13 14:37:07.407848 proj[34851:10576594] 同期: レルム ファイルを開く: /var/mobile/Containers/Data/Application/65681835-AE09-4E4C-830A-BA7A8ADF0D69/Documents/realm-object-server /b77ccd68258d68251aafb1bac5d8d653/realm%3A%2F%2F192.168.0.12%3A9080%2F%7E%2Fz

2016-12-13 14:37:07.408088 proj[34851:10576378] /Users/x/y/z/Pods/Realm/Realm/RLMClassInfo.mm:97: [realm-core-2.2.0] アサーションに失敗しました: rlmSchema .objectSchema.count == schema.size()

(help@realm.io に送信)

0 投票する
1 に答える
85 参照

ios - 固有の Realm コンテナ オブジェクト

Realm のタスク デモ アプリに従って、リアルタイム同期を実装しました。

モデルと一緒に保持するために、ダミーのコンテナーが使用されListます。

デモ アプリはオフラインでの使用をサポートしていないようです。

この設定で、オフライン デバイスだけでなくオンライン デバイスでもアプリを起動し、オフライン デバイスでオンラインにするとどうなるのだろうと考えました。

私の当初の予想では、2 つのコンテナー (無効な状態) で終了する予定でしたが、テストしたところ、驚くべきことに、最後に 1 つのコンテナーしかありませんでした。

しかし、時々 2 つのコンテナーを取得し、原因を特定できませんでした。

問題は、これが正確にどのように機能するかということです。オフライン デバイスを初めて同期するときに通常、コンテナーが複製されないのは、同じオブジェクトとして扱われるためだと思います。おそらく、主キーなどがないためでしょうか? しかし、なぜそれが時々複製されるのでしょうか? そして、ここでのベストプラクティスは何ですか? 主キーを使用するか、接続後に重複があるかどうかを確認する必要がありますか? はいの場合は、コンテナーを手動でマージする必要がありますか?

0 投票する
1 に答える
798 参照

swift - Realm Object Server - エラー: リクエスト パラメータが検証されませんでした

Realmの代わりに使用する小さな iOS アプリケーションを作成しましたCoreData。ユーザーが入力したデータのみを保存するため、アプリはログインを必要としません。たとえば、ユーザーがアプリを削除した場合、次にアプリが再インストールされたときにデータがデフォルトでそこにあるように、現在ユーザーデータを保存しようとしています。

ここで私は混乱しています。アプリはログイン画面を必要としませんが、Realm Mobile Platformを引き続き使用できますか? (つまり、iCloud アカウントにログインしているユーザーのデータは自動的に保存されます)。

これまでに行ったことは次のとおりです。

  1. AWS EC2 インスタンスで Realm Object Server を構成しましたが、ブラウザーから問題なく Realm ダッシュボードにログインできます。
  2. 認証手順に従ってconfiguration.yml、ファイルに cloudKit スタンザを構成しました。
  3. setupRealm()func で次のコードを試しましたが、パラメーターの検証エラーが発生し続けます。

    これはエラーメッセージです:

    /li>

私の iCloud ユーザーはオブジェクトサーバーと結びついていないのではないかと思いますが、それらをまとめることができないようです。ポインタをいただければ幸いです。


0 投票する
1 に答える
328 参照

swift - Realm リストを初期化する方法は?

ここにある realm swift チュートリアルに取り組んでいます

ローカル マシンでチュートリアルを正常に完了したら、レルム オブジェクト サーバーを Ubuntu デジタル オーシャン サーバーにデプロイしました。

サーバーを指している開発マシンでコードを実行すると、次のエラーメッセージが表示されます。

問題は、チュートリアルを進めていくと、Mac アプリを起動してタスクを作成しなければならないことです。次に、次のステップに進み、iOS アプリを作成します。iOS アプリの SetupRealm() では、次の行でレルム サーバーと同期します。

self.itemsこれは、レルム サーバーに (Mac アプリによって) 最初のタスクが追加された場合にのみ入力されます。したがって、ローカル マシンですべてを実行すると、チュートリアルは正常に機能します。

問題は、レルム オブジェクト サーバーをデジタル オーシャン Ubuntu インスタンスにデプロイするときです。その最初のタスクを設定する Mac アプリはありません。

レルムをチェックして初期化/入力するより良い方法はありself.itemsますか?