C# 无法在Xamarin窗体中打开路径xxx处的域
我正在从远程MongoDB领域读取数据,该领域与我的本地领域同步,但在同步之后,我似乎无法从我的本地领域读取数据 这是当我尝试从本地领域阅读时得到的信息:C# 无法在Xamarin窗体中打开路径xxx处的域,c#,xamarin.forms,realm,C#,Xamarin.forms,Realm,我正在从远程MongoDB领域读取数据,该领域与我的本地领域同步,但在同步之后,我似乎无法从我的本地领域读取数据 这是当我尝试从本地领域阅读时得到的信息: Unable to open a realm at path '/data/user/0/com.companyname.appname/files/default.realm': Incompatible histories. Expected a Realm with no or in-realm history, but found h
Unable to open a realm at path '/data/user/0/com.companyname.appname/files/default.realm': Incompatible histories. Expected a Realm with no or in-realm history, but found history type 3 Path:Exception backtrace:\n<backtrace not supported on this platform>.
无法在路径“/data/user/0/com.companyname.appname/files/default.realm”处打开域:不兼容的历史记录。应为没有或处于域历史记录中的域,但找到了历史记录类型3路径:异常回溯:\n。
这是我的密码:
private async Task<Realm> OpenRealm()
{
try
{
var user = App.realmApp.CurrentUser;
//if user is not logged on yet log on the user and sync
if (user == null)
{
var CurrentUser = await App.realmApp.LogInAsync(Credentials.Anonymous());
var config = new SyncConfiguration("Hirschs", CurrentUser);
_realm = await Realm.GetInstanceAsync(config);
return _realm;
}
else
{
return _realm = Realm.GetInstance();
}
}
catch (Exception ex)
{
await UserDialogs.Instance.AlertAsync(new AlertConfig
{
Title = "An error has occurred",
Message = $"An error occurred while trying to open the Realm: {ex.Message}"
});
// Try again
return await OpenRealm();
}
}
private异步任务OpenRealm()
{
尝试
{
var user=App.realmApp.CurrentUser;
//如果用户尚未登录,请登录该用户并同步
if(user==null)
{
var CurrentUser=wait App.realmApp.LogInAsync(Credentials.Anonymous());
var config=新的同步配置(“Hirschs”,当前用户);
_realm=await realm.GetInstanceAsync(配置);
回归王国;
}
其他的
{
return _realm=realm.GetInstance();
}
}
捕获(例外情况除外)
{
等待UserDialogs.Instance.AlertAsync(新的AlertConfig
{
Title=“发生错误”,
Message=$“尝试打开领域时出错:{ex.Message}”
});
//再试一次
return wait OpenRealm();
}
}
这里的问题是,您试图在同步领域已经存在的同一路径中创建新的本地领域
我假设您希望同步打开同一领域(如果设备处于脱机状态,这是必需的)。在这种情况下,您只需要对同步和异步调用使用相同的配置,如文档中所述
你可以这样做:
private async Task<Realm> OpenRealm()
{
try
{
var currentUser = App.realmApp.CurrentUser;
if (currentUser == null)
{
var currentUser = await App.realmApp.LogInAsync(Credentials.Anonymous());
var config = new SyncConfiguration("Hirschs", currentUser);
_realm = await Realm.GetInstanceAsync(config);
return _realm;
}
else
{
var config = new SyncConfiguration("Hirschs", currentUser);
_realm = Realm.GetInstance(config);
return _realm;
}
}
catch (Exception ex)
{
await UserDialogs.Instance.AlertAsync(new AlertConfig
{
Title = "An error has occurred",
Message = $"An error occurred while trying to open the Realm: {ex.Message}"
});
}
}
private异步任务OpenRealm()
{
尝试
{
var currentUser=App.realmApp.currentUser;
if(currentUser==null)
{
var currentUser=wait App.realmApp.LogInAsync(Credentials.Anonymous());
var config=新的同步配置(“Hirschs”,当前用户);
_realm=await realm.GetInstanceAsync(配置);
回归王国;
}
其他的
{
var config=新的同步配置(“Hirschs”,当前用户);
_realm=realm.GetInstance(配置);
回归王国;
}
}
捕获(例外情况除外)
{
等待UserDialogs.Instance.AlertAsync(新的AlertConfig
{
Title=“发生错误”,
Message=$“尝试打开领域时出错:{ex.Message}”
});
}
}
这里的问题是,您试图在同步领域已经存在的同一路径中创建新的本地领域
我假设您希望同步打开同一领域(如果设备处于脱机状态,这是必需的)。在这种情况下,您只需要对同步和异步调用使用相同的配置,如文档中所述
你可以这样做:
private async Task<Realm> OpenRealm()
{
try
{
var currentUser = App.realmApp.CurrentUser;
if (currentUser == null)
{
var currentUser = await App.realmApp.LogInAsync(Credentials.Anonymous());
var config = new SyncConfiguration("Hirschs", currentUser);
_realm = await Realm.GetInstanceAsync(config);
return _realm;
}
else
{
var config = new SyncConfiguration("Hirschs", currentUser);
_realm = Realm.GetInstance(config);
return _realm;
}
}
catch (Exception ex)
{
await UserDialogs.Instance.AlertAsync(new AlertConfig
{
Title = "An error has occurred",
Message = $"An error occurred while trying to open the Realm: {ex.Message}"
});
}
}
private异步任务OpenRealm()
{
尝试
{
var currentUser=App.realmApp.currentUser;
if(currentUser==null)
{
var currentUser=wait App.realmApp.LogInAsync(Credentials.Anonymous());
var config=新的同步配置(“Hirschs”,当前用户);
_realm=await realm.GetInstanceAsync(配置);
回归王国;
}
其他的
{
var config=新的同步配置(“Hirschs”,当前用户);
_realm=realm.GetInstance(配置);
回归王国;
}
}
捕获(例外情况除外)
{
等待UserDialogs.Instance.AlertAsync(新的AlertConfig
{
Title=“发生错误”,
Message=$“尝试打开领域时出错:{ex.Message}”
});
}
}
看不到在何处使用用户名和密码执行用户验证。我使用的是匿名登录。看不到在何处使用用户名和密码执行用户验证。我使用的是匿名登录。如何在不创建新的本地域实例的情况下同步打开同步域,以便应用程序工作脱机?@PhulusogornRamulifho我添加了一个示例,但更多信息可以在链接中的文档中找到。我如何在不创建新的本地域实例的情况下同步打开同步域,以便应用程序脱机工作?@PhulusogornRamulifho我添加了一个示例,但是更多信息可以在链接中的文档中找到