Transmitir dados para o Atlas - Flutter SDK
Nesta página
Você pode usar aingestão de dados para transmitir dados do aplicação cliente para um Atlas App Services habilitado para Flexible Sync .
Talvez você queira sincronizar dados unidirecionalmente em aplicativos IoT, como um sensor meteorológico que envia dados para a nuvem. O arquivo de dados também é útil para gravar outros tipos de dados imutáveis em que você não exige a resolução de conflitos, como criar faturas a partir de uma aplicação de varejo ou registrar evento de aplicação.
A ingestão de dados é otimizada para fornecer melhorias de desempenho para volumes de trabalho pesados somente de inserção no lado do cliente.
Sincronizar dados unidirecionalmente a partir de um aplicativo do cliente
Definir um objeto assimétrico
Arquivo de dados e objeto assimétricos exigem Flexible Sync. Para definir um objeto assimétrico, passe ObjectType.asymmetricObject
para @RealmModel()
.
(ObjectType.asymmetricObject)class _WeatherSensor { () "_id") ( late ObjectId id; late String deviceId; late double modtemperatureInFahrenheitel; late double barometricPressureInHg; late double windSpeedInMph; }
Para obter mais informações sobre como definir um objeto assimétrico, consulte Definir um objeto assimétrico.
Conecte-se e autentique-se com um App Services App
Para transmitir dados do cliente para seu aplicativo de backend, você deve conectar-se a um backend do App Services e autenticar um usuário.
final appConfig = AppConfiguration(appId); final app = App(appConfig);
final anonCredentials = Credentials.anonymous(); await app.logIn(anonCredentials);
Abrir um Realm
Depois de ter um usuário autenticado, abra um Realm.
final currentUser = await app.logIn(credentials); final config = Configuration.flexibleSync(currentUser, [Tricycle.schema], path: 'flex.realm'); final realm = Realm(config);
Ao contrário da sincronização bidirecional, o arquivo de dados não usa uma assinatura Flexible Sync.
Não é possível query um objeto assimétrico ou persisti-lo em um Realm local, portanto, objetos assimétricos são incompatíveis com o Flexible Sync bidirecional, a Partition-Based Sync e o uso do Realm local.
Criar objetos assimétricos
Depois de ter um Realm aberto, você pode criar um objeto assimétrico dentro de uma transação de escrita. Passe os dados do seu objeto para realm.ingest
.
realm.write(() { realm.ingest( WeatherSensor(weatherSensorId, "WX1278UIT", 66.7, 29.65, 2)); });
Você não pode ler objetos assimétricos. Depois de criados, eles são sincronizados com o backend do App Services e o reconhecimento de data center vinculado do Atlas.
O Atlas Device Sync gerencia o ciclo de vida desses dados por completo. Ele é mantido no dispositivo até que a sincronização da ingestão de dados seja concluída e, em seguida, é removido do dispositivo.