How to ensure uniqueness of a particular field in loopback model. Like below is the model Post, I have a field genericId in it, I want it to be unique in the database, and loopback to through an error, on duplicate key insertion.
{
"name": "Post",
"plural": "Post",
"base": "PersistedModel",
"properties": {
"genericId": {
"type": "string",
"required":True
},
"moderatedAt": {
"type": "date"
}
},
"validations": [],
"acls": [],
"methods": []
}
I have tried searching there documentation, and other examples but no success. One solution which I can think of is, to create a remoteHook for the create function, and validate this field before inserting, but looking for some other way.
Not sure if it is the better way to achieve uniqueness, but you can find here the docs about indexing your model.
Just add a unique index on the field you want, and voila !
For your model, that would be :
{
...
"genericId": {
"type": "string",
"required": True,
"index": {"unique": true}
},
...
}
However, if the genericId
field is the actual Id of the model, I suggest you declare it as such, so you can use findById
method, and also avoid creation of a duplicate id
field, which will happen if you don't declare any in your model.
{
...
"genericId": {
"type": "string",
"id": true, // Ensure uniqueness and avoid another model id field
"generated": true // Add this if you want Loopback to manage id content for you
},
...
}