Quantcast
Channel: Active questions tagged mongodb-atlas - Stack Overflow
Viewing all articles
Browse latest Browse all 279

Schema validation failed - Mongo db atlas device sync

$
0
0

I want to use the Atlas device sync feature of Mongo DB in my Application. I have modeled a BankAccount class in my Kotlin code like this.

open class BankAccount: RealmObject, Searchable {    @PrimaryKey    var _id: ObjectId = ObjectId()    var accountHolderName: String = ""    var accountNumber: String = ""    var accountType: String = ""    var bankName: String = ""    var cardCvv: String = ""    var cardNo: String = ""    var cardPin: String = ""    var expiryDate: String = ""    var haveBankingApp: Boolean = false    var haveCard: Boolean = false    var haveUpi: Boolean = false    var ifscCode: String = ""    var isArchived: Int = 0    var loginPin: String = ""    var nameOnCard: String = ""    var ownerId: String = ""    var regEmail: String = ""    var regMobNo: String = ""    var remarks: String = ""    var transactionPin: String = ""    var upiPin: String = ""    override fun doesMatchSearchQuery(query: String): Boolean {        return bankName.contains(query.trim(), ignoreCase = true) || accountHolderName.contains(query.trim(), ignoreCase = true)    }}

My JSON Schema looks like this:

{"title": "BankAccount","properties": {"_id": {"bsonType": "objectId"    },"ownerId": {"bsonType": "string"    },"bankName": {"bsonType": "string"    },"accountHolderName": {"bsonType": "string"    },"accountType": {"bsonType": "string"    },"accountNumber": {"bsonType": "string"    },"ifscCode": {"bsonType": "string"    },"regMobNo": {"bsonType": "string"    },"regEmail": {"bsonType": "string"    },"remarks": {"bsonType": "string"    },"haveCard": {"bsonType": "bool"    },"nameOnCard": {"bsonType": "string"    },"cardNo": {"bsonType": "string"    },"expiryDate": {"bsonType": "string"    },"cardCvv": {"bsonType": "string"    },"cardPin": {"bsonType": "string"    },"haveUpi": {"bsonType": "bool"    },"upiPin": {"bsonType": "string"    },"haveBankingApp": {"bsonType": "bool"    },"loginPin": {"bsonType": "string"    },"transactionPin": {"bsonType": "string"    },"isArchived": {"bsonType": "int"    }  },"required": ["_id","ownerId","bankName","accountHolderName","accountType","accountNumber","ifscCode","regMobNo","regEmail","remarks","haveCard","nameOnCard","cardNo","expiryDate","cardCvv","cardPin","haveUpi","upiPin","haveBankingApp","loginPin","transactionPin","isArchived"  ]}

Everything is perfect. I have enabled device sync correctly set the permissions in the right way and also configured the Mongo DB realm perfectly, but I am still constantly getting this error of the primary key :(

Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException:[StandaloneCoroutine{Cancelling}@5b935b7, Dispatchers.Main.immediate]Caused by: java.lang.IllegalStateException:[RLM_ERR_SCHEMA_VALIDATION_FAILED]: Schema validation failed due tothe following errors:- There must be a primary key property named '_id' on a synchronized Realm but none was found for type 'BankAccount'


Viewing all articles
Browse latest Browse all 279

Trending Articles