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 npm en. Para instalar la versión 1 de realm-cli en su sistema, asegúrese de tener instalado Node.js y ejecute el siguiente comando en su shell:
npm install -g mongodb-realm-cli@^1
Opciones Generales
Importante
Comprueba tu versión de CLI
Esta página documenta los comandos, argumentos y marcas de la versión 1 de realm-cli. Si tiene una versión más reciente de realm-cli, ejecute realm-cli --help para obtener una lista de comandos actualizados y ejemplos de uso. Para comprobar su versión de CLI, utilice: realm-cli --version.
Las siguientes opciones están disponibles para todos los comandos realm-cli:
--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, autentica la solicitud con la sesión guardada en la ruta especificada (si existe) en lugar del estado de autenticación CLI actual.
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
Utilice realm-cli login para autenticar un usuario de MongoDB Cloud con una clave API programática de MongoDB Atlas.
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
Ver el usuario que ha iniciado sesión actualmente
Utilice realm-cli whoami para ver detalles sobre el usuario que está actualmente conectado a 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
Aplicaciones
Importar una aplicación
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.
Si no se especifica,
realm-cliintentará usar el valor deapp_iddefinido en config.json. Siconfig.jsonno tiene unapp_idvalor, lerealm-clisolicitará que cree una nueva aplicación.Nota
Nuevas ID de aplicaciones de aplicaciones
Si crea una nueva aplicación con
realm-cli, App Services genera un nuevo ID de aplicación e ignora cualquier valor que especifique para el indicador--app-id.
--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.
Si se omite el argumento
path,realm-clibuscará un archivoconfig.jsonen el directorio de la aplicación actual.
--strategy ['merge|replace|replace-by-name']- Optional.Default: Merge
La estrategia de importación que
realm-clidebe utilizar al conciliar entidades importadas.
--project-id <MongoDB Cloud Project ID>- Optional.
El 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-cliignora el valor de a--project-idmenos que esté importando una nueva aplicación.
Exportar una aplicación
Utilice realm-cli export para guardar una configuración de aplicación en un directorio de aplicación 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.
Si está habilitado,
realm-cliexporta la configuración de la aplicación sin ningún campo que entre en conflicto con la implementación a través del control de origen de GitHub, incluidos campos comoname,app_id,locationydeployment_modelen el archivoconfig.json, así como el campoconfig.clusterNameen elconfig.jsonde cualquier fuente de datos de Atlas vinculada a la aplicación.
Diferencia entre cambios de aplicación pendientes
Utilice realm-cli diff para devolver una diferencia de los archivos de configuración entre la aplicación implementada y su directorio de aplicación local.
Diff application config files realm-cli diff Diff application config files and hosted files realm-cli diff --include-hosting
La diferencia se parece a lo 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
Crea un secreto
Utilice realm-cli secrets add para crear un nuevo secreto con el nombre y valor especificados.
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
Eliminar un secreto
Utilice realm-cli secrets remove para eliminar un secreto existente de su aplicación.
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.
Todas las importaciones tienen como opción predeterminada la estrategia merge a menos que se especifique lo contrario.
Combinar
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 fusió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 la importación, 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ó 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 permanecieron sin cambios después de importar 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
Con la estrategia replace, si el valor id de una entidad importada coincide con el id de una entidad existente, App Services reemplaza la entidad existente por la entidad importada. Si el valor id de una entidad importada no coincide con una entidad existente, la importación falla. Si el valor id de una entidad existente no coincide con el id de ninguna entidad importada, App Services elimina esa entidad existente.
App Services genera valores id para las entidades que carecen de valores id antes de importarlas como nuevas entidades. Importar una entidad con un valor id distinto de ObjectID no genera ningún 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 la importación, 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 la importación, la aplicación tiene las siguientes funciones:
{ "id": <ObjectID 2>, "name": "FunctionB", ... } { "id": <ObjectID 3>, "name": "FunctionC", ... } { "id": <ObjectID 4>, "name": "FunctionZ", ... }
Tanto la aplicación existente como el directorio de configuración importado contenían funciones con los nombres FunctionB y FunctionC. Como resultado, ambas funciones conservaron sus valores y nombres id anteriores. El resto de los valores de ambas funciones reflejan los valores cargados desde los archivos de configuración. FunctionA no se incluyó en el directorio de la aplicación importada, por lo que no está presente en la aplicación después de importar con la estrategia replace-by-name. FunctionZ se importó como una nueva entidad y se le asignó un valor id generado por el sistema.