0

我是 MongoDB Realm 的新手,但是对 MongoDB 有一些经验。

在对同一问题发表任何评论之前,我已经参加了所有讨论,但没有任何帮助。

我咨询了这些讨论:

Android BAD_CHANGESET(realm::sync::ProtocolError:212): Bad changeset (UPLOAD) 错误

不断收到 BadChangeset 错误

但遗憾的是,上述解决方案要么对我不起作用,要么我无法理解。

我目前在 Nodejs 中使用 Realm。激活同步时,我将分区键作为 restroName。但是我在使用以下连接时不断收到 212 错误:

const realm = new Realm({
        schema:[ItemSchema],
        sync:{
            user:user,
            partitionValue: user.id,
        }
    })
failed to validate upload changesets: SET instruction had incorrect partition value for key “restroName” (ProtocolErrorCode=212)

当我尝试使用 partionValue: “anything” 时,它给出:

user does not have permission to sync on partition (ProtocolErrorCode=206)

所以我认为它需要是 partitionValue 上的 user.id,但我想将数据存储在 restroName 的领域中。

此外,我总是在进行更改之前清除领域数据(擦除它)。

我希望我能得到帮助。

更新:我的项目架构如下所示:

const ItemSchema = {
    name: "item",
    properties: {
      _id: "objectId",
      restroName: "string",
      details:  "string?",
      name: "string?",
      status: "string?",
      price: "string?"
    },
    primaryKey: '_id'
}
4

1 回答 1

0

之所以出现这个问题,是因为我将 partitionKey 作为用户 id 和 restroName 弄乱了。我解决它的方法是将partitionKey保留为restroName,并且在权限下我将模板保持为none并将用于在领域中读取和写入的分区设置为:

{
  "%%partition": "%%user.customData.restroName"
}

在这里咨询以启用自定义数据。

于 2020-12-15T07:46:39.703 回答