我在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上成功创建了新领域,但是即使在多次运行此代码之后,它仍然根据仪表板和领域浏览器保持为空。您在我的评论中注意到本地领域确实包含书面对象,而不是远程。执行此代码时,服务器日志会显示大量消息,但没有警告或错误。我错过了什么?
答案 0 :(得分:1)
感谢Nikola弄清楚我错过了域名网址上的端口号。添加后,一切似乎都正常工作。
var realmUrl = "realm://###.###.###.###:9080/~/newrealm";
奇怪的是,没有任何类型的错误被抛出,对象只是默默地没有被写入远程领域。