我啓動了一個新的ROS在谷歌雲計算的Ubuntu虛擬機後顯示爲空,我試圖寫經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上成功創建了新領域,但即使在多次運行此代碼之後,它仍然根據儀表板和Realm瀏覽器爲空。在我的評論中你會注意到,本地領域確實包含了書寫的對象,而不是遙控器。執行此代碼時,服務器日誌顯示大量消息,但沒有警告或錯誤。我錯過了什麼?
您可以嘗試添加'await realm.GetSession()。WaitForUploadAsync()' - 完成後,本地數據將與Realm Object Server同步。這裏的文檔:https://realm.io/docs/xamarin/1.6.0/api/reference/Realms.Sync.Session.html#Realms_Sync_Session_WaitForUploadAsync –
@NikolaIrinchev代碼似乎不會通過WaitForUploadAsync進展。斷點不命中並且System.Diagnostic.Debug.WriteLine調用不打印。在任何try/catch塊或Session.Error中仍然沒有錯誤。如果我在將任何內容寫入領域之前發出此調用,我都會遇到此行爲。應用程序輸出:[Mono] DllImport搜索:'realm-wrappers'('librealm-wrappers.so')。 [單聲道]正在搜索'realm_syncsession_wait'。 [單聲道]探測'realm_syncsession_wait'。 [Mono]找到'realm_syncsession_wait'。 [單聲道] [0x96d92930]工作者停車,超時?沒有中斷?沒有 – aweFalafelApps
嗯...另一個問題,你的'realmUrl'似乎缺少你發佈的代碼片段中的端口 - 這是你的應用中的情況,還是僅僅是在SO上粘貼代碼時的疏忽?如果是這樣的話,那麼你需要像'realm://###.###.###.###:9080 /〜/ newrealm' –