Search code examples
node.jsmongodbloopbackjs

Make index unique of a model in loopback


This is what my model looks like

  "name": "mClass",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "mClassName": {
      "type": "string",
      "required": true,
      "index": {
        "unique": true
      }
    },
    "mClassUrl": {
      "type": "string"
    },
    "mCreatedBy": {
      "type": "string",
      "required": true
    },
    "mCreatedAt": {
      "type": "date",
      "required": true,
      "default": "$now"
    },
    "mUpdatedAt": {
      "type": "date"
    },
    "mDeletedAt": {
      "type": "date"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$unauthenticated",
      "permission": "DENY"
    }
  ],
  "methods": {}
}

i want to make class name as unique. I tried index:{unique:true} but it seems that it is not working as i can still create classes with same name. Please help me on what changes to be made.


Solution

  • Alternatively, in your mClass.js you can do the following:

    module.exports = function (mClass) {
    
        mClass.validatesUniquenessOf('mClassName');
    
    };