在 MongoDB Realm 中终止并重新启用同步后,我必须在客户端删除哪个文件?

Which file do I have to delete on the client side after terminating and re-enabling sync in MongoDB Realm?

我对 MongoDB 领域中的一个模式做了一些更改,然后终止并重新建立了同步。现在我收到这条消息:

Error:

client file not found. The server has forgotten about the client-side file presented by the client. This is likely due to using a synchronized realm after terminating and re-enabling sync. Please wipe the file on the client to resume synchronization. { sessionIdent: 1, clientFileIdent: 35 } (ProtocolErrorCode=208)

我必须删除哪个文件?我会丢失所有数据吗?

对于 macOS,当使用仅限本地的领域时,领域文件称为 default.realm。 'default' 部分可以根据您的应用程序的要求进行调用,并且可以存储在您设备中的任何位置 - 同样是根据应用程序的要求。默认情况下,它存储在 Application Support 文件夹中(见下文)。

当使用 MongoDB 领域(同步)时,它是一个不同的结构,因为每个 'partition' 都存储为一个单独的文件,并且文件根据它们的分区名称命名

它们将位于您的 users/your_name/Library/Application Support/com.your_developer_name.app 名称中,对于 Task Tracker 应用程序来说看起来像这样

文件如下所示:

在这种情况下,我的应用有两个分区:Task Tracker 和 Users,因此有两个文件。

struct Constants {
    static let REALM_APP_ID = "tasktracker-aaaaa"
    static let REALM_PARTITION_VALUE = "Task Tracker"
    static let USERS_PARTITION_VALUE = "Users"
}

如果你想完全重置,你可以把整个文件夹tasktracker-xxxxx扔掉。不过请记住,Realm 会进行一些缓存,如果您的应用程序已连接到 realm,并且是 运行,文件将重新生成。因此,请确保在关闭应用程序时删除这些文件,或者如果您在应用程序内执行此操作,则在它连接到领域之前的任何时候。或者在所有对象都被释放之后(这很棘手 - 使用自动释放池)。

Link 到 Legacy Docs 删除 non-sync'd 文件以供参考 Delete Files

如果找不到文件,请将“print(Realm.Configuration.defaultConfiguration.fileURL!)”添加到您的应用程序以获取目录,然后在查找器中将目录粘贴到文件夹中。在那里你会找到 default.realm 文件和带有过时文件的 mongodb-realm 目录。删除了它们,一切都很好!!