0

を追加した後、私はGoogleのクラウドコンピューティングのUbuntuのVM上で新しいROSを解雇し、Xamarin.Androidプロジェクトを経由してオブジェクトを記述しようとしています:レルムオブジェクト・サーバは、空を示しアイテム

public class TestObject : RealmObject 
{ 
    public string TestString { get; set; } 
    public int TestInt { get; set; } 
} 

//new non-existent realm, I also tried a public realm -> realm://###.###.###.###/newrealm 
var realmUrl = "realm://###.###.###.###/~/newrealm"; 

//preconfigured admin credentials 
var creds = Credentials.UsernamePassword("[email protected]", "password", false); 
var user = await User.LoginAsync(creds, new Uri("http://###.###.###.###:9080")); 
var config = new SyncConfiguration(user, new Uri(realmUrl)); 
var realm = Realm.GetInstance(config); 

//this event never fires 
Session.Error += (sender, errorArgs) => { var ex = errorArgs.Exception; }; 

//left this in just to be sure there were no permissions issues 
await user.ApplyPermissionsAsync(PermissionCondition.Default, realmUrl, AccessLevel.Write); 

//this will contain objects on subsequent runs 
var existing = realm.All<TestObject>().ToList(); 

//also tried realm.Write(() => { }); 
using (var trans = realm.BeginWrite()) 
{ 
    var test = new TestObject(); 
    test.TestString = "test"; 
    test.TestInt = 99; 
    realm.Add(test); 
    trans.Commit(); 
}; 

その結果、新しいレルムはリモートROS上で正常に作成されますが、このコードを複数回実行した後でも、ダッシュボードとレルムブラウザによっては空のままです。私のコメントでは、ローカルのレルムにはリモートではなく書かれたオブジェクトが含まれていることがわかります。このコードが実行されると、サーバーログには多くのメッセージが表示されますが、警告やエラーはありません。私は何を逃したのですか?

+0

'await realm.GetSession()。WaitForUploadAsync()'を追加できますか?完了すると、ローカルデータはRealm Object Serverと同期されます。ここにdocsがあります:https://realm.io/docs/xamarin/1.6.0/api/reference/Realms.Sync.Session.html#Realms_Sync_Session_WaitForUploadAsync –

+0

@NikolaIrinchevこのコードはWaitForUploadAsyncを過ぎて進行していないようです。ブレークポイントはヒットせず、System.Diagnostic.Debug.WriteLine呼び出しは印刷されません。まだtry/catchブロックやSession.Errorにエラーはありません。私がこの呼び出しを置くと、領域に何かを書き込む前でもこの動作が発生します。アプリケーション出力:[モノラル] DllImportで検索: 'realm-wrappers'( 'librealm-wrappers.so')。 [Mono] 'realm_syncsession_wait'を検索しています。 [Mono]プロービング 'realm_syncsession_wait'。 [Mono] 'realm_syncsession_wait'として見つかりました。 [Mono] [0x96d92930]ワーカーがいない、タイムアウト?いいえ。 no – aweFalafelApps

+0

うーん...別の質問では、あなたの 'realmUrl'はあなたが投稿したスニペットのポートが不足しているようです - これはあなたのアプリの場合ですか、それともコードを貼り付けるときの見落としですか?その場合、 'realm://###.###.###.###:9080 /〜/ newrealm'のようなポートが必要です –

答えて

1

Nikolaのおかげで、私は領域のURLにポート番号が不足していました。それを追加した後、すべてが正しく動作しているようです。

var realmUrl = "realm://###.###.###.###:9080/~/newrealm";

は、いかなる種類のエラーが、オブジェクトはただ黙って、リモート・レルムに書かれていなかったスローされなかったことを奇妙に思えます。

+0

助けてくれてうれしい!エラーがないことを詳述するために、Realm Mobile Platformは、デバイスがオフラインのときにうまく動作するように設計されています。この場合、サーバーに接続できない場合、サーバーはオフラインであるとみなされるか、何らかの理由でサーバーに到達できません(プロキシやその他のネットワークの問題など)。したがって、データはローカルに保存され、接続が復元されるとすべてがアップロードされます。 –

+0

少なくとも、ネットワーク接続が存在するときに診断出力を表示することは可能ですが、リモート・レルムへの接続はできません。 – aweFalafelApps

関連する問題