Android集成Realm出现Customer类firstName空值配置不匹配报错怎么解决
问题原因
该报错是字段非空约束不匹配导致,和字段类型无关。你在Android端为firstName字段添加了@Required注解,声明该字段不可为null,但你提供的服务端Schema中没有配置对应字段的非空约束,服务端默认所有未声明为required的字段均为可空状态,两端非空规则不一致触发了Schema mismatch报错。
解决方案
可根据业务需求选择任意一种方案对齐两端规则:
- 方案1:对齐服务端规则到Android端
给服务端Customer Schema添加required字段数组,声明所有不可为空的字段,修改后的服务端Schema示例如下:{ "title": "Customer", "required": ["_id", "_partition", "firstName", "lastName", "email"], "properties": { "_id": { "bsonType": "objectId" }, "_partition": { "bsonType": "string" }, "email": { "bsonType": "string" }, "firstName": { "bsonType": "string" }, "lastName": { "bsonType": "string" }, "phone": { "bsonType": "string" } } } - 方案2:对齐Android端规则到服务端
移除Android端Customer类中firstName、lastName、email字段上的@Required注解,允许这些字段为null,和服务端默认的可空规则匹配。
验证操作
修改完成后,开发阶段可以先清空Android应用的本地存储(清除应用数据或者卸载重装),再重新启动应用同步数据,确认报错是否消失。
内容的提问来源于stack exchange,提问作者Menci
相关产品推荐
相关产品推荐

