0

我在 Google Cloud Compute 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("admin@gmail.com", "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 上成功创建了新领域,但即使在多次运行此代码后,根据仪表板和领域浏览器它仍然是空的。您会在我的评论中注意到本地领域确实包含书面对象,而不是远程对象。执行此代码时,服务器日志显示大量消息,但没有警告或错误。我错过了什么?

4

1 回答 1

1

感谢Nikola发现我错过了领域 url 上的端口号。添加后,一切似乎都正常工作。

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

似乎很奇怪,没有抛出任何类型的错误,对象只是默默地没有写入远程领域。

于 2017-08-30T19:56:03.820 回答