app/ └── data_sources/ └── <service name>/ ├── config.json └── <database>/ └── <collection>/ ├── schema.json ├── relationships.json └── rules.json
Configuração do serviço
Clusters do MongoDB
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean> } }
Campo | Descrição | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring | Obrigatório. Padrão: O nome do serviço usado para se referir ao cluster dentro deste Atlas App Services App. O nome pode ter no máximo 64 caracteres e deve conter apenas letras, números, sublinhados e hífens ASCII. | ||||||||||||
typestring | Obrigatório. Para clusters do MongoDB Atlas, esse valor é sempre | ||||||||||||
config.clusterNamestring | Obrigatório. O nome do cluster no Atlas. | ||||||||||||
config.readPreferencestring | O modo de preferência de leitura para query enviadas por meio do serviço.
| ||||||||||||
config.wireProtocolEnabledBoolean | Se |
Instâncias do banco de dados federado
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
Campo | Descrição |
|---|---|
namestring | Obrigatório. Padrão: O nome do serviço costumava se referir à instância do banco de dados federado nesse aplicativo do App Services. O nome pode ter no máximo 64 caracteres e deve conter apenas letras, números, sublinhados e hífens ASCII. |
typestring | Obrigatório. Para uma instância do banco de dados federado, esse valor é sempre |
config.dataLakeNamestring | Obrigatório. O nome da instância do Banco de Dados Federado no Atlas. |
reconhecimento de data center e collection
Esquema de collection
Se você deseja impor um esquema para uma collection, defina um arquivo de configuração schema.json que contém um JSON schema para os documento. O esquema de nível raiz deve ser um esquema de objeto, que possui o seguinte formato:
{ "title": "<Object Type Name>", "bsonType": "object", "properties": { "<Property Name>": { <Schema> }, ... } }
Relacionamentos
{ "<Source Field Name>": { "ref": "#/relationship/<Data Source Name>/<Database Name>/<Collection Name>", "source_key": "<Source Field Name>", "foreign_key": "<Foreign Field Name>", "is_list": <Boolean> }, ... }
Campo | Descrição | |
|---|---|---|
refstring | Uma string de JSON schema | |
source_keystring | O nome do campo no esquema desta collection que especifica quais documento da collection estrangeira incluir no relacionamento. Um documento externo será incluído se | |
foreign_keystring | O nome do campo no esquema da collection externa que contém o valor referenciado por | |
is_listBoolean | Se Se |
Exemplo
Um aplicativo de e-commerce define um relacionamento entre duas collections: cada documento em store.orders faz referência a um ou mais documentos na collection store.items ao incluir valores de item _id na array items do pedido. Ambas as coleções estão no mesmo cluster vinculado (mongodb-atlas) e banco de dados (store).
O relacionamento é definido para a coleção orders :
{ "items": { "ref": "#/relationship/mongodb-atlas/store/items", "source_key": "items", "foreign_key": "_id", "is_list": true } }
Regras padrão
Você pode definir regras padrão que se aplicam a todas as collections em uma fonte de dados que não tenham regras mais específicas em nível de collection definidas.
Você define regras padrão no arquivo de configuração default_rule.json da fonte de dados em data_sources/<data-source-name>/default_rule.json.
{ "roles": [<Role>], "filters": [<Filter>] }
Campo | Descrição |
|---|---|
rolesArray<Role> | |
filtersArray<Filter> | Uma array de configurações de Filtro. |
Regras de collection
Se a fonte de dados não for uma fonte de dados federada, você poderá definir as regras em nível de collection no arquivo de configuração rules.json de uma collection.
{ "database": "<Database Name>", "collection": "<Collection Name>", "roles": [<Role>], "filters": [<Filter>] }
Campo | Descrição |
|---|---|
databasestring | O nome do reconhecimento de data center que contém a collection. |
collectionstring | O nome da collection. |
rolesRole[] | |
filtersFilter[] | Uma array de configurações de Filtro. |
Configurações de regras
Funções
{ "name": "<Role Name>", "apply_when": { Expression }, "document_filters": { "read": { Expression }, "write": { Expression } }, "read": { Expression }, "write": { Expression }, "insert": { Expression }, "delete": { Expression }, "search": <Boolean>, "fields": { "<Field Name>": { "read": { Expression }, "write": { Expression }, "fields": { Embedded Fields } }, ... }, "additional_fields": { "read": { Expression }, "write": { Expression } } }
Campo | Descrição | ||||||||
|---|---|---|---|---|---|---|---|---|---|
namestring | O nome da role. Os nomes de roles identificam e distinguem entre roles na mesma collection. Limitado a 100 caracteres ou menos. | ||||||||
apply_whenobject | Uma expressão avaliada como verdadeira quando essa role se aplica a um usuário. Quando o Device Sync (modo flexível) não está ativado, o App Services atribui uma função por documento. Quando o Realm Mobile Sync (modo flexível) está habilitado, o App Services atribui funções por collection e por sessão, ou seja, para cada collection sincronizada quando um cliente abre uma conexão de sincronização. Para atribuir uma função, o App Services avalia o Se o Device Sync (modo flexível) estiver ativado, as funções atribuídas deverão ser compatíveis com a sincronização. Se a role não for compatível com a sincronização, mas seu | ||||||||
document_filtersDocument Default: undefined | Um documento com expressões de leitura e gravação que determinam se as outras permissões da role podem ser avaliadas. Se o Device Sync estiver habilitadoo, Se o Realm Mobile Sync não estiver habilitado, | ||||||||
document_filters.readobject?Default: undefined | Uma expressão que especifica se Para manter a compatibilidade do Sync, a expressão deve ser definida e só pode fazer referência a campos de query . | ||||||||
document_filters.writeobject?Default: undefined | Uma expressão que especifica se Para manter a compatibilidade do Sync, a expressão deve ser definida e só pode fazer referência a campos de query . | ||||||||
readobject?Default: undefined | Uma expressão que avalia para verdadeira se a função tiver permissão para ler todos os campos no documento. Para manter a compatibilidade de sincronização, a expressão deve ser um literal booleano ( As permissões de leitura no nível do documento têm prioridade sobre quaisquer permissões no nível do campo. Se uma função tiver permissões Para definir um fallback padrão junto com as regras em nível de campo, deixe | ||||||||
writeobject?Default: undefined | Uma expressão avaliada como verdadeira se a role tiver permissão para adicionar, modificar ou remover todos os campos no documento. Para manter a compatibilidade de sincronização, a expressão deve ser um literal booleano ( As permissões de gravação no nível do documento têm prioridade sobre quaisquer permissões no nível do campo. Se uma função tiver permissões Para definir um fallback padrão junto com as regras em nível de campo, deixe Você pode utilizar expansões como ImportantePermissão de leitura implícitaSempre que uma função tem permissão | ||||||||
insertobject?Default: true | Uma expressão que avalia para O App Services só avalia essa expressão para operações de inserção e somente após determinar que a role tem permissão | ||||||||
deleteobject?Default: true | Uma expressão que é avaliada como verdadeira se a role tiver permissão para excluir um documento da collection. O App Services só avalia essa expressão para operações de exclusão e somente após determinar que a role tem permissão | ||||||||
searchBoolean Default: true | Uma expressão que é avaliada como verdadeira se a função tiver permissão para fazer o Atlas Search na collection usando o Atlas Search. ImportanteO App Services | ||||||||
fieldsDocument Default: {} | Um documento em que cada chave corresponde a um nome de campo e cada valor define as permissões Para manter a compatibilidade de sincronização, as expressões ObservaçãoPrioridade de permissãoAs permissões | ||||||||
fields.<Field Name>.readobject?Default: false | Uma expressão avaliada como verdadeira se a role tiver permissão para ler o campo. Para manter a compatibilidade de sincronização, a expressão deve ser um literal booleano ( | ||||||||
fields.<Field Name>.writeobject?Default: false | Uma expressão avaliada como verdadeira se a role tiver permissão para adicionar, modificar ou remover o campo. Para manter a compatibilidade de sincronização, a expressão deve ser um literal booleano ( | ||||||||
fields.<Field Name>.fieldsDocument Default: {} | Um documento Consulte o padrão de função Permissões de nível de campo para documentos incorporados para obter mais informações. | ||||||||
additional_fieldsDocument Default: {} | Um documento que define as permissões Para manter a compatibilidade de sincronização, as expressões | ||||||||
additional_fields.readobject?Default: false | Uma expressão avaliada como verdadeira se a role tiver permissão para ler qualquer campo que não tenha uma definição de permissão de nível de campo em Para manter a compatibilidade de sincronização, a expressão deve ser booleana ( | ||||||||
additional_fields.writeobject?Default: false | Uma expressão avaliada como verdadeira se a role tiver permissão para adicionar, modificar ou remover qualquer campo que não tenha uma definição de permissão de nível de campo em Para manter a compatibilidade de sincronização, a expressão deve ser booleana ( |
Filtros
{ "name": "<Filter Name>", "apply_when": { Expression }, "query": { MongoDB Query }, "projection": { MongoDB Projection } }
Campo | Descrição | |
|---|---|---|
namestring | Obrigatório. O nome do filtro. Os nomes de filtros são úteis para identificar e distinguir entre filtros. Limitado a 100 caracteres ou menos. | |
apply_whenobject | Uma expressão que determina quando esse filtro se aplica a uma operação MongoDB de entrada. ImportanteO Atlas App Services avalia e aplica filtros antes de ler qualquer tipo de documento, portanto, você não pode usar expansões de documentos do MongoDB em uma expressão Apply When de um filtro. No entanto, você pode usar outras expansões, como | |
queryobjectDefault: {} | Uma query doMongoDB que o Atlas App Services mescla à query existente de uma operação filtrada. ExemploUm filtro retém documentos que tenham | |
projectionobjectDefault: {} | Uma projeção doMongoDB que o Atlas App Services mescla na projeção existente de uma operação filtrada. ImportanteConflitos de projeçãoAs projeção do MongoDB podem ser inclusivas ou exclusivas, ou seja, podem retornar apenas campo especificados ou reter campo que não são especificados. Se vários filtros se aplicarem a uma query, todos os filtros deverão especificar o mesmo tipo de projeção, ou a query falhará. ExemploUm filtro retém o campo |