La validación de Firebase Rules y la validación de captura fallan en la aplicación de Android

Diseño

Un usuario que puede iniciar sesión en la aplicaciónEl usuario conectado puede crear clientes que se almacenarán ennode cuyo valor será el ID de usuario actual conectado

Valores actuales de DB

{
  "customers" : {
    "UserId1" : {
      "custId1" : {
        "customerCode" : "thk",
        "customerLimit" : "58866",
        "customerName" : "Test New "
      },
      "custId2" : {
        "customerCode" : "thh",
        "customerLimit" : "5698",
        "customerName" : "Yeth"
      }
    },
    "UserId2" : {
      "custId3" : {
        "customerCode" : "thh",
        "customerLimit" : "5886",
        "customerName" : "Test "
      },
      "custId4" : {
        "customerCode" : "tbh",
        "customerLimit" : "58669",
        "customerName" : "New Test"
      }
    }
  }
}

A continuación se muestra la regla actualmente definida paracustomers mesa enfirebase.

{
  "rules": {
    "customers":{
      ".read": "auth != null", 
      ".write": "auth != null", 
      "$CID":{
            "customerName":{
                ".validate": "newData.isString() && newData.val().length < 100"
            },
            "customerCode":{
                ".validate": "newData.isString() && newData.val().length<4 && !newData.exists()"
            },
            "customerLimit":{}
      }
    }   
  }
}

Aunque he definido que una regla paracustomerCode es decir, debe tener un valor inferior a 4 caracteres, permite insertar 5 caracteres. Además, ¿cómo puedo agregar una validación que valide la unicidad decustomerCode para cadauserId? a partir de ahora tiene!newData.exists() pero tampoco funciona.

¿Podría alguien guiarme en la dirección correcta?

Respuestas a la pregunta(1)

Su respuesta a la pregunta