Expresiones "Aplicar cuando"
Atlas App Services determina si un rol es aplicable evaluando la expresión 'aplicar cuando' que defines para cada rol.
Esta sección contiene ejemplos de expresiones de "aplicar cuando" para escenarios comunes en los que no se utiliza Device Sync. Para obtener orientación sobre escenarios comunes de Device Sync, consulta la Guía de permisos de Device Sync.
Para agregar una expresión a un rol, busque el escenario que mejor se adapte a su caso de uso y luego copie y pegue la plantilla proporcionada en el rol. Es posible que deba modificar los valores de marcador de posición (indicados por <angle brackets>) en la plantilla para que coincida con su colección o adapte la plantilla para que se ajuste a sus necesidades.
Nota
También puede utilizar las expresiones "aplicar cuando" en esta página para servicios externos.
The User Is the Document Owner
This expression evaluates to true if the active user's unique id value matches the value of the specified field. "Owner ID field" refers to whatever field in your schema represents a relationship with a user object.
{ "<Owner ID Field>": "%%user.id" }
Un campo de tipo arreglo contiene el ID del usuario
This expression evaluates to true if the active user's unique id value matches one or more values in the specified array field.
{ "<Array Field>": "%%user.id" }
El usuario tiene una dirección de correo electrónico
Esta expresión se evalúa como true si el usuario activo tiene alguna dirección de correo electrónico incluida en su objeto de usuario interno.
{ "%%user.data.email": { "%exists": true } }
The User Has A Specific Email Address
This expression evaluates to true if the active user's email address matches the specified email address.
{ "%%user.data.email": "<Email Address>" }
Un campo contiene la dirección de correo electrónico del usuario
This expression evaluates to true if the active user's email address matches the value of the specified field.
{ "%%root.email": "%%user.data.email" }
An Array Field Contains the User's Email Address
Esta expresión se evalúa como true si la dirección de correo electrónico del usuario activo coincide con uno o más valores de cadena en el campo de matriz especificado.
{ "<Array Field>": "%%user.data.email" }
Un campo satisface una condición compleja
Esta expresión se evalúa como true si la función isAuthorizedUser devuelve true cuando se le pasa el valor de identificación del usuario activo.
Nota
Puede llamar a cualquier función Atlas desde una expresión JSON utilizando el %function operador.
{ "%%true": { "%function": { "name": "isAuthorizedUser", "arguments": ["%%user.id"] } } }
Permisos CRUD
aplicación Services utiliza la configuración de permisos de un rol para determinar si el usuario activo puede insertar o borrar un documento, así como también en qué campos del documento puede leer y guardar.
Esta sección contiene plantillas que definen roles para escenarios comunes. Para aplicar un conjunto de permisos a un rol, busque el escenario que mejor se adapte a su caso de uso. Actualice los permisos de campo, los permisos de documento o la tabla de permisos del rol para que coincidan con la captura de pantalla proporcionada o copie y pegue la plantilla proporcionada en la configuración del modo avanzado de la colección. Asegúrese de modificar los valores de marcador de posición (indicados <angle brackets> por) en la plantilla para que se ajusten a sus necesidades.
El rol puede leer todos los campos pero no puede escribir
To allow a role to read any field, set the document-level read field to true and write field to false.
![]() | |
The Role Can Read & Write All Fields
To allow a role to read or write any field, set the document-level write field to true. Document-level writes require read permission, so the role will be able to read all fields.
![]() | |
El Rol Puede Leer Todos los Campos y Escribir en Campos Específicos
Para permitir que un rol lea todos los campos, configure el campo read a nivel de documento como true y el campo write como false. Para especificar un campo en el que el rol pueda escribir, configure el campo write como true en el documento de configuración del campo, que está incrustado en el documento fields.
![]() | |
El rol puede leer y guardar en todos los campos, pero no puede insertar nuevos documentos
To allow a role to read or write any field, set the document-level write field to true. Document-level writes require read permission, so the role will be able to read all fields.
Para evitar que el rol inserte nuevos documentos, configure el campo de nivel de documento insert en false.
![]() | |
El rol no puede escribir en campos específicos
To allow a role to write to any field except for those you specify, set the document-level read field to true. Set the corresponding field-level write fields to false and read fields to true in the fields document. Lastly, set the additional_fields.write field to true.
![]() | |
Advanced Role Patterns
The use cases described in this section require you to use advanced functionality that is not supported by the default collection rules editor in the App Services UI. To use this template, convert to advanced mode or import a collection rule configuration with App Services CLI.
Roles solo de inserción
Para permitir que un rol inserte nuevos documentos pero, de no ser así, se evite que lean o modifiquen cualquier dato, ajusta insert en true y ajusta el valor write a nivel de documento en una expresión de regla que evalúe true solo si el documento no existía antes de la operación.
{ "name": "insertOnly", "apply_when": <JSON Expression>, "delete": false, "insert": true, "write": { "%%prevRoot": { "%exists": false } }, "additional_fields": {} }
Nota
You must specify a JSON expression for write to prevent users from reading data. To insert a document a role must also have write permission for all fields in the document; however, setting write directly to true would also give the role read permission. The JSON expression ensures that the role only has read permission for the initial document insert.
Permisos a nivel de campo para documentos incrustados
To allow a role to read or write some but not all fields of an embedded document, add embedded documents that match the path of the embedded field to the fields document.
{ "name": "canReadEmbeddedField", "apply_when": {}, "delete": true, "insert": true, "fields": { "someEmbeddedDocument": { "fields": { "someEmbeddedField": { "read": true, "write": true } } } }, "additional_fields": {} }
Nota
App Services applies any read and write permissions defined for a given field to all embedded fields that the field contains regardless of any permissions defined for those fields.




