集成下载的变更集失败:转换接收的变更集失败:架构不匹配



我是MongoDB Realm的新手。我正在开发一个安卓应用程序,从服务器获取员工列表,然后显示在列表上。这是我在Mongo atlas上配置的模式:

{
"title": "Employee",
"bsonType": "object",
"required": [
"_id",
"_partition",
"name",
"employeeId",
"company",
"role",
"isActive",
"created"
],
"properties": {
"_id": {
"bsonType": "objectId"
},
"_partition": {
"bsonType": "string"
},
"cardId": {
"bsonType": "string"
},
"company": {
"bsonType": "string"
},
"created": {
"bsonType": "double"
},
"employeeId": {
"bsonType": "string"
},
"featureVector0": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector1": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector10": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector11": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector12": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector13": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector14": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector15": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector16": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector17": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector18": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector19": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector2": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector3": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector4": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector5": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector6": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector7": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector8": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"featureVector9": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
},
"isActive": {
"bsonType": "bool"
},
"name": {
"bsonType": "string"
},
"password": {
"bsonType": "string"
},
"role": {
"bsonType": "string"
}
}
}

下面是对象

open class Employee(
@PrimaryKey var _id: ObjectId = ObjectId(),
var _partition: String = "",
@Required
var cardId: String? = null,
var company: String = "",
var created: Double = 0.0,
var employeeId: String = "",
@Required
var featureVector0: RealmList<Double> = RealmList(),
@Required
var featureVector1: RealmList<Double> = RealmList(),
@Required
var featureVector10: RealmList<Double> = RealmList(),
@Required
var featureVector11: RealmList<Double> = RealmList(),
@Required
var featureVector12: RealmList<Double> = RealmList(),
@Required
var featureVector13: RealmList<Double> = RealmList(),
@Required
var featureVector14: RealmList<Double> = RealmList(),
@Required
var featureVector15: RealmList<Double> = RealmList(),
@Required
var featureVector16: RealmList<Double> = RealmList(),
@Required
var featureVector17: RealmList<Double> = RealmList(),
@Required
var featureVector18: RealmList<Double> = RealmList(),
@Required
var featureVector19: RealmList<Double> = RealmList(),
@Required
var featureVector2: RealmList<Double> = RealmList(),
@Required
var featureVector3: RealmList<Double> = RealmList(),
@Required
var featureVector4: RealmList<Double> = RealmList(),
@Required
var featureVector5: RealmList<Double> = RealmList(),
@Required
var featureVector6: RealmList<Double> = RealmList(),
@Required
var featureVector7: RealmList<Double> = RealmList(),
@Required
var featureVector8: RealmList<Double> = RealmList(),
@Required
var featureVector9: RealmList<Double> = RealmList(),
var isActive: Boolean = false,
var name: String = "",
@Required
var password: String? = null,
var role: String = ""
): RealmObject() {}

我用下面的代码来从服务器获取数据。

employeeRealmConfig = SyncConfiguration.Builder(realmApp.currentUser(),"Employee").
allowQueriesOnUiThread(true)
.allowWritesOnUiThread(true).build()
Realm.getInstanceAsync(employeeRealmConfig, object : Realm.Callback() {
override fun onSuccess(realm: Realm) {
Log.d(TAG, "Realm.getInstanceAsync onSuccess")
//fetch full data for the first time
employeeRealmUi = realm
employeeAll = realm.where<Employee>().findAllAsync()
Log.d(TAG,"employee sizes = ${employeeAll.size}")
employeeAll.addChangeListener(employeeRealmChangeListener)
}
override fun onError(exception: Throwable) {
Log.e(TAG, "Realm.getInstanceAsync ${exception.message}")
}
})
private val employeeRealmChangeListener =
OrderedRealmCollectionChangeListener<RealmResults<Employee>> { _, changeSet ->
Log.d(TAG,"employeeRealmChangeListener - new employeeAll size " + employeeAll.size.toString())
}

运行android应用程序后:我得到了以下问题:

2022-06-29 16:23:09.801 6394-6473/com.example.testrealmproject E/REALM_SYNC: Connection[1]: Session[1]: Failed to integrate downloaded changesets: Failed to transform received changeset: Schema mismatch: Property 'cardId' in class 'Employee' is nullable on one side and not on the other.
2022-06-29 16:23:09.805 6394-6473/com.example.testrealmproject E/REALM_JAVA: Session Error[wss://realm.mongodb.com/]: CLIENT_BAD_CHANGESET(realm::sync::ClientError:112): Bad changeset (DOWNLOAD)

怎么了?

此问题通过卸载应用程序解决。

相关内容

最新更新