Importante
La CLI de Realm está obsoleta
realm-cli Está obsoleto y no recibirá futuras funciones ni correcciones de errores. En su lugar, utilice la CLI de App Services.
La CLI de App Services está disponible en npm. Para instalar la CLI en su sistema, asegúrese de tener Node.js
instalado y luego ejecute el siguiente comando en su shell:
npm install -g atlas-app-services-cli
Overview
La interfaz de línea de comandos de Atlas App Services (realm-cli) le permite administrar sus aplicaciones mediante programación. Con realm-cli, puede crear o actualizar aplicaciones desde un directorio local, así como exportar aplicaciones existentes a un directorio local.
Instalación
realm-cli está disponible en npm. Para instalar la versión 1 de realm-cli en tu sistema, asegúrate de tener Node.js instalado y luego ejecuta el siguiente comando en tu shell:
npm install -g mongodb-realm-cli@^1
Opciones Generales
Importante
Comprueba la versión de tu CLI
This page documents commands, arguments, and flags for version 1 of realm-cli. If you have a newer version of realm-cli, run realm-cli --help for a list of updated commands and usage examples. To check your CLI version, use: realm-cli --version.
The following options are available for all realm-cli commands:
--config-path <File System Path>- Optional.
Si se incluye con
realm-cli login, almacena información sobre la sesión autenticada en un archivo en la ruta especificada. La información de la sesión incluye tu nombre de usuario de MongoDB Cloud, API Key programática de MongoDB Atlas y un token de actualización de sesión.Si se incluye con cualquier otro comando, se autentica la solicitud con la sesión guardada en la ruta especificada (si existe) en lugar del estado de autenticación actual de la CLI.
Advertencia
Dado que el archivo de configuración de la sesión contiene su clave privada de API programática de MongoDB Atlas, debe evitar compartir este archivo sin intención.
Autenticación
Autenticar un usuario de CLI
Use realm-cli login to authenticate a MongoDB Cloud user with a MongoDB Atlas programmatic API Key.
realm-cli login --api-key="<my api key>" --private-api-key="<my private api key>"
--api-key <api key>Una clave API programática pública de MongoDB Atlas válida para la cuenta de MongoDB Cloud con la que desea iniciar sesión.
--private-api-key <private api key>Una clave API programática privada válida de MongoDB Atlas para la cuenta de MongoDB Cloud con la que desea iniciar sesión.
--username <MongoDB Cloud username>(Obsoleto) El nombre de usuario de la cuenta de MongoDB Cloud con la que desea iniciar sesión usando claves API personales.
Cerrar sesión del usuario actual de CLI
Utilice realm-cli logout para cerrar la sesión del usuario que ha iniciado sesión actualmente.
realm-cli logout
View the Currently Logged In User
Utiliza realm-cli whoami para ver detalles sobre el usuario que tiene sesión iniciada en la CLI, si corresponde.
realm-cli whoami
Si hay un usuario actualmente conectado, su información se mostrará en la siguiente línea en el siguiente formato:
<username> [API Key: ********-****-****-****-<last 12 digits of API key>]
Si ningún usuario ha iniciado sesión, realm-cli devolverá el siguiente mensaje:
no user info available
Apps
Import an Application
Utilice realm-cli import para importar un directorio de aplicación local a una aplicación alojada. Si importa un directorio a una aplicación que no existe, realm-cli puede crear la aplicación por usted.
Tip
Debes ser un Project Owner para importar una aplicación. Para obtener más información, consulta: Roles de usuario de Atlas.
realm-cli import \ --app-id=myapp-abcde \ --path=./path/to/app/dir \ --strategy=merge \ --include-hosting \ --include-dependencies
--app-id <App Services Application ID>- Optional.
El ID de la aplicación de su aplicación.
If not specified,
realm-cliwill attempt to use the value ofapp_iddefined in config.json. Ifconfig.jsondoes not have anapp_idvalue,realm-cliprompts you to create a new application.Nota
New ID de la aplicación
If you create a new application with
realm-cli, App Services generates a new App ID and ignores any value that you specify for the--app-idflag.
--path <path>- Optional.
La ruta al directorio que contiene los archivos que deseas importar. El directorio debe contener, como mínimo, un archivo config.json válido.
If the
pathargument is omitted,realm-cliwill search for aconfig.jsonfile in the current application directory.
--strategy ['merge|replace|replace-by-name']- Optional.Default: Merge
The import strategy that
realm-clishould use when reconciling imported entities.
--project-id <MongoDB Cloud Project ID>- Optional.
La Project ID del proyecto Atlas en el que desea alojar una aplicación recién creada. Si se especifica,
realm-clino le solicitará que seleccione un proyecto al crear una nueva aplicación.Nota
realm-cliignores the value of--project-idunless you are importing a new application.
Export an Application
Usa realm-cli export para guardar una configuración de aplicación en un directorio de aplicaciones local.
realm-cli export \ --app-id=myRealmApp-abcde \ --output=path/to/exported/app/dir \ --include-hosting \ --as-template
--output <path>- Optional.
La ruta del directorio donde App Services exportará su aplicación.
Si se especifica,
realm-clicrea un directorio en la ruta indicada y exporta la configuración de la aplicación al nuevo directorio. Si ya existe un archivo o directorio en la ruta especificada, la exportación fallará.Nota
Si se omite el argumento
output,realm-cliexportará la configuración de la aplicación a un nuevo directorio dentro del directorio de trabajo actual.
--include-hosting- Optional.
Si se especifica, exporta todos los activos estáticos alojados en el directorio
hosting/filesde su aplicación.
--for-source-control- Optional.
If enabled,
realm-cliexports the application configuration without any fields that conflict with deployment via GitHub source control, including fields likename,app_id,location, anddeployment_modelin theconfig.jsonfile as well as theconfig.clusterNamefield in theconfig.jsonof any Atlas data sources linked to the application.
Diff Pending Application Changes
Usa realm-cli diff para devolver una diferencia de los archivos de configuración entre la aplicación implementada y tu directorio de aplicaciones local.
Diff application config files realm-cli diff Diff application config files and hosted files realm-cli diff --include-hosting
La diferencia se asemeja a la siguiente:
--- functions/oldFunctionName/config.json +++ functions/oldFunctionName/config.json @@ -1,6 +1 @@ -{ - "id": "5d4c6a5cd28e555496a705da", - "name": "oldFunctionName", - "private": false -} --- functions/newFunctionName/config.json +++ functions/newFunctionName/config.json @@ -1 +1,6 @@ +{ + "id": "5d4c6a5cd28e555496a705da", + "name": "newFunctionName", + "private": false +} Modified Files: * /index.html * /auth/confirmEmail.html * /auth/resetPassword.html
Misterios
Listar todos los secretos
Utiliza realm-cli secrets list para devolver una lista que contenga el nombre e ID de cada Secret en tu aplicación.
realm-cli secrets list
La lista de secretos devuelta se parece a la siguiente:
ID Name 5d5c25415e30c7ef857c6a10 test-secret-please-ignore 5d56dd453b467e2a48a6ec32 some-other-secret
Crear un secreto
Use realm-cli secrets add to create a new Secret with the specified name and value.
realm-cli secrets add --name=mySecret --value=SuperSecretValue!
Actualizar el valor de un secreto
Utilice realm-cli secrets update para cambiar el valor de un secreto existente en su aplicación.
Update a Secret by name realm-cli secrets update --secret-name=mySecret --value=NewSecretValue realm-cli secrets update --name=mySecret --value=NewSecretValue Update a Secret by name realm-cli secrets update --secret-id=5ba9c5c2e707c02b38031412 --value=NewSecretValue realm-cli secrets update --id=5ba9c5c2e707c02b38031412 --value=NewSecretValue
Remover un secreto
Use realm-cli secrets remove to delete an existing Secret from your application.
Remove a Secret by name realm-cli secrets remove --secret-name=mySecret realm-cli secrets remove --name=mySecret Remove a Secret by ID realm-cli secrets remove --secret-id=5ba9c5c2e707c02b38031412 realm-cli secrets remove --id=5ba9c5c2e707c02b38031412
Estrategias de importación
Al realizar una importación de aplicaciones, existen múltiples estrategias integradas para manejar entidades existentes.
All imports default to the merge strategy unless otherwise specified.
Unir
realm-cli import --strategy=merge
Con la estrategia merge, las entidades del directorio de la aplicación se añaden a la aplicación de forma no destructiva. Las entidades existentes en una aplicación se conservan si no están representadas en el directorio de la aplicación importada.
Si el valor id de una entidad importada coincide con el id de una entidad existente, esta se actualizará para que coincida con la entidad importada. App Services asigna valores id generados por el sistema a las entidades sin valores id antes de importarlas como nuevas entidades.
Si se importa una entidad con un valor id que no coincide con una entidad existente, la importación fallará. Importar una entidad con un valor distinto de ObjectID id genera un error.
Nota
Si una entidad importada tiene un campo id, el valor debe ser un ObjectID o la combinación fallará.
Ejemplo
Una aplicación existente tiene tres funciones:
{ "id": <ObjectID 1>, "name": "FunctionA", ... } { "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... }
merge
strategy.{ "id": <ObjectID 1>, "name": "FunctionA_Updated!", ... } { "name": "FunctionD", ... }
Después de importar, la aplicación tiene las siguientes funciones:
{ "id": <ObjectID 1>, "name": "FunctionA_Updated!" } { "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... } { "id": <ObjectID 4>, "name": "FunctionD", ... }
FunctionA se actualizó según el archivo de configuración importado. FunctionB y FunctionC no se incluyeron en el directorio de la aplicación importada, por lo que permanecieron sin cambios después de importarlos con la estrategia merge. FunctionD se importó como una nueva entidad y se le asignó un valor id generado por el sistema.
Reemplaza
realm-cli import --strategy=replace
Bajo la estrategia replace, si el valor id de una entidad importada coincide con la id de una entidad existente, Servicios de aplicación reemplaza la entidad existente con la importada. Si el valor id de una entidad importada no coincide con el de una entidad existente, la importación falla. Si el id de una entidad existente no coincide con el id de ninguna entidad importada, los Servicios de Aplicación eliminan esa entidad existente.
App Services generates id values for entities that lack id values before importing them as new entities. Importing an entity with a non-ObjectID id value does not throw an error.
Ejemplo
Una aplicación existente tiene tres funciones:
{ "id": <ObjectID 1>, "name": "FunctionA", ... } { "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... }
replace
strategy.{ "id": <ObjectID 1>, "name": "FunctionA_Updated!", ... } { "name": "FunctionD", ... } { "id": "non-ObjectID-value", "name": "FunctionE", ... }
Después de importar, la aplicación tiene las siguientes funciones:
{ "id": <ObjectID 1>, "name": "FunctionA_Updated!" } { "id": <ObjectID 4>, "name": "FunctionD", ... } { "id": <ObjectID 5>, "name": "FunctionE", ... }
FunctionA se actualizó en función de su archivo de configuración importado. FunctionB y FunctionC no se incluyeron en el directorio de la aplicación importada, por lo que no están presentes en la aplicación después de importar con la estrategia replace. FunctionD y FunctionE se importaron como nuevas entidades y se les asignaron valores id generados por el sistema.
Reemplazar por nombre
realm-cli import --strategy=replace-by-name
Con la estrategia replace-by-name, si el valor name de una entidad importada coincide con el name de una entidad existente, App Services reemplaza la entidad existente por la entidad importada. Si el valor name de una entidad importada no coincide con una entidad existente, la entidad se convierte en una nueva. Si el valor name de una entidad existente no coincide con el name de ninguna entidad importada, App Services elimina esa entidad existente.
Si una entidad importada no tiene valor name, realm-cli generará un error.
Ejemplo
Una aplicación existente tiene tres funciones:
{ "id": <ObjectID 1>, "name": "FunctionA", ... } { "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... }
replace
strategy.{ "name": "FunctionZ", ... } { "name": "FunctionB", ... } { "name": "FunctionC", ... }
Después de importar, la aplicación tiene las siguientes funciones:
{ "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... } { "id": <ObjectID 4>, "name": "FunctionZ", ... }
Both the existing application and the imported configuration directory contained functions with the names FunctionB and FunctionC. As a result, both functions retained their previous id values and names. The rest of both function's values reflect the values uploaded from the configuration files. FunctionA was not included in the imported application directory, so it is not present in the app after importing with the replace-by-name strategy. FunctionZ was imported as a new entity and assigned a system-generated id value.