Estoy tratando de entender cómo funciona cada elemento de mongoDB, pero estoy realmente confundido acerca de cómo se maneja fuera de línea.
Ir a: https://realm.io/
Leo esto:
La base de datos móvil de Realm es una alternativa de código abierto y fácil de usar para CoreData y SQLite. Comience en minutos, transfiera su aplicación en horas y ahórrese semanas de trabajo.
Y luego esta parte donde menciona la parte fuera de línea:
Diseñado para uso sin conexión
¿Significa esto que Realm se puede usar como una base de datos completamente fuera de línea en una aplicación móvil?
si entiendo correctamente, esta base de datos funcionaría de manera similar a Android Room donde almaceno datos usando Objetos/Documentos.
Porque cuando voy a la sección "Comencemos", me redirigen a aquí:
https://docs.mongodb.com/realm/get-started/introduction-mobile/
Donde leí esta parte:
Antes de comenzar, necesitará una cuenta de MongoDB Atlas. Puede obtener más información sobre cómo crear una cuenta de Atlas en la documentación de Introducción a Atlas.
Así que mi primera pregunta: ¿por qué necesito una cuenta de Atlas? Entiendo que el Atlas es tener una base de datos MongoDB en la nube. ¿Por qué necesito esto si quiero trabajar con una base de datos fuera de línea?
Supongo que el tutorial quiere mostrar todas las herramientas trabajando juntas. Así que tal vez ese paso se puede omitir. Pero luego, al ir al tutorial de React Native, veo esta parte:
https://docs.mongodb.com/realm/tutorial/react-native/#std-label-react-native-tutorial
Conéctese a su aplicación MongoDB Realm
Para que la aplicación funcione con su backend , primero debe crear una instancia de la aplicación Realm. La aplicación Realm es la interfaz para el backend de MongoDB Realm. Navegue hasta el archivo getRealmApp.js y complete getRealmApp()
Esta parte del código parece realmente importante:
// Returns the shared instance of the Realm app. export function getRealmApp() { if (app === undefined) { const appId = "<your Realm app ID here>"; // Set Realm app ID here. const appConfig = { id: appId, timeout: 10000, app: { name: "default", version: "0", }, }; app = new Realm.App(appConfig); } return app; }el código me obliga a indicar el AppId que obtengo en Realm Console.
Entonces, mi segunda pregunta: ¿Cómo puedo hacer que esta parte esté fuera de línea? ¿Debo omitir el ID de la aplicación? ¿Funcionaría esto?
¿Es esto posible o Realm no es realmente adecuado para el trabajo completamente fuera de línea?
I'm really confused about how the offline is handled.Realm es una primera base de datos fuera de línea y todos los datos se almacenan localmente en un archivo y luego se sincronizan con el servidor más tarde si está utilizando MongoDB Realm Sync
¿Significa esto que Realm se puede usar como una base de datos completamente fuera de línea en una aplicación móvil?
Con seguridad. Los datos se almacenan en un archivo como se mencionó.
Así que mi primera pregunta: ¿por qué necesito una cuenta de Atlas?
No necesita una cuenta de Atlas para el uso sin conexión. Deberá configurar una cuenta para poder acceder a MongoDB Realm Console y configurar una aplicación Realm para sincronizar
Esta parte del código parece realmente importante:
El código en su pregunta se usa cuando usa MongoDB Realm Sync. No es necesario solo para uso sin conexión.
Entonces, mi segunda pregunta: ¿Cómo puedo hacer que esta parte esté fuera de línea? ¿Debo omitir el ID de la aplicación? ¿Funcionaría esto?
No necesita ese código solo para uso sin conexión.
¿Es esto posible o Realm no es realmente adecuado para el trabajo completamente fuera de línea?
Es muy adecuado para el trabajo solo fuera de línea y si desea hacer la transición a un modelo en línea, también es adecuado para eso.
Si desea usar Realm sin conexión, solo consulte la documentación Abrir un Reino local (no sincronizado) que muestra
Para abrir un reino local (no sincronizado), pase un objeto Configuration() a Realm.open() o new Realm(). El siguiente ejemplo crea un objeto de configuración con una propiedad de ruta que define la ruta del archivo local para almacenar datos.
const config = { schema: [schemas.TaskSchema, schemas.UserSchema, schemas.ProjectSchema], path: "./myrealm/data" }; const realm = await Realm.open(config);una vez que tenga el realm var, puede trabajar con realm localmente:
// Query realm for all instances of the "Task" type. const tasks = realm.objects("Task");