Puedes utilizar Ingesta de datos para transmitir datos desde la aplicación cliente a una aplicación Atlas App Services habilitada para Flexible Sync.
Es posible que desee sincronizar datos unidireccionalmente en aplicaciones de IoT, como un sensor meteorológico que envía datos a la nube. La ingesta de datos también es útil para escribir otros tipos de datos inmutables donde no se requiere resolución de conflictos, como la creación de facturas desde una aplicación de comercio electrónico o el registro de eventos de la aplicación.
La ingesta de datos está optimizada para proporcionar mejoras de rendimiento para cargas de trabajo pesadas de solo inserción del lado del cliente.
Sincronizar datos unidireccionalmente desde una aplicación cliente
Definir un objeto asimétrico
La ingesta de datos y los objetos asimétricos requieren sincronización flexible. Para definir un objeto asimétrico, pase ObjectType.asymmetricObject a @RealmModel().
(ObjectType.asymmetricObject) class _WeatherSensor { () ("_id") late ObjectId id; late String deviceId; late double modtemperatureInFahrenheitel; late double barometricPressureInHg; late double windSpeedInMph; }
Para obtener más información sobre cómo definir un objeto asimétrico, consulte Definir un objeto asimétrico.
Conectarse y autenticarse con una aplicación de servicios de aplicaciones
Para transmitir datos desde el cliente a su aplicación backend, debe conectarse a un backend de App Services y autenticar a un usuario.
final appConfig = AppConfiguration(appId); final app = App(appConfig);
final anonCredentials = Credentials.anonymous(); await app.logIn(anonCredentials);
Abrir un reino
Una vez que tenga un usuario autenticado, abra un reino sincronizado.
final currentUser = await app.logIn(credentials); final config = Configuration.flexibleSync(currentUser, [Tricycle.schema], path: 'flex.realm'); final realm = Realm(config);
A diferencia de la sincronización bidireccional, la ingesta de datos no utiliza una suscripción de sincronización flexible.
No es posible consultar un objeto asimétrico ni conservarlo en un ámbito local, por lo que los objetos asimétricos son incompatibles con la sincronización flexible bidireccional, la sincronización basada en particiones y el uso del ámbito local.
Crear objetos asimétricos
Una vez que tenga un dominio abierto, puede crear un objeto asimétrico dentro de una transacción de escritura. Pase los datos de su objeto a realm.ingest.
realm.write(() { realm.ingest( WeatherSensor(weatherSensorId, "WX1278UIT", 66.7, 29.65, 2)); });
No se pueden leer objetos asimétricos. Una vez creados, se sincronizan con el backend de App Services y la base de datos Atlas vinculada.
Atlas Device Sync gestiona completamente el ciclo de vida de estos datos. Se mantiene en el dispositivo hasta que la sincronización de Data Ingest se completa y luego se elimina del dispositivo.