Ensure unique field value in loopback model

The Lookback v4 solution looks like this:

@model()
export class Client extends Entity {

  @property({
    type: 'string',
    required: true,
    index: {
      unique: true,
    },
  })
  name: string;

}

Then you must update your schema:

npm run migrate

or recreate it:

npm run migrate -- --rebuild

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
    },
 ...
}

Set validation rule in your common/models/post.js

Post.validatesUniquenessOf('genericId');