Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Transmitir dados para o Atlas - React Native SDK

Nesta página

  • Sincronizar dados unidirecionalmente a partir de um aplicativo do cliente
  • Definir um objeto assimétrico
  • Conecte-se e autentique-se com um App Services App
  • Abrir um Realm
  • Criar objetos assimétricos

Você pode usar aingestão de dados para transmitir dados do aplicativo cliente para um aplicativo Flexible Sync-enabled Atlas App Services App.

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.

1

Objetos assimétricos sincronizam dados unidirecionalmente. Defina um objeto assimétrico configurando asymmetric para true em seu modelo de objeto:

class WeatherSensor extends Realm.Object {
static schema = {
name: 'WeatherSensor',
// sync WeatherSensor objects one way from your device
// to your Atlas database.
asymmetric: true,
primaryKey: '_id',
properties: {
_id: 'objectId',
deviceId: 'string',
temperatureInFahrenheit: 'int',
barometricPressureInHg: 'float',
windSpeedInMph: 'float',
},
};
}
class WeatherSensor extends Realm.Object<WeatherSensor> {
_id!: Realm.BSON.ObjectId;
deviceId!: string;
temperatureInFahrenheit!: number;
barometricPressureInHg!: number;
windSpeedInMph!: number;
static schema: ObjectSchema = {
name: 'WeatherSensor',
// sync WeatherSensor objects one way from your device
// to your Atlas database.
asymmetric: true,
primaryKey: '_id',
properties: {
_id: 'objectId',
deviceId: 'string',
temperatureInFahrenheit: 'int',
barometricPressureInHg: 'float',
windSpeedInMph: 'float',
},
};
}

Para obter mais informações sobre como definir um objeto assimétrico, consulte Definir um objeto assimétrico.

2

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.

function LogIn() {
const app = useApp();
useEffect(() => {
app.logIn(Realm.Credentials.anonymous());
}, []);
return <></>;
}

A ingestão de dados é uma funcionalidade do Flexible Sync, portanto, o aplicativo ao qual você se conecta deve usar o Flexible Sync.

3

Depois de ter um usuário autenticado, você pode abrir um domínio sincronizado usando um objeto de configuração Flexible Sync.

// Create a configuration object
const realmConfig = {schema: [WeatherSensor]};
// Create a realm context
const {RealmProvider, useRealm, useObject, useQuery} =
createRealmContext(realmConfig);
// Expose a sync realm
function AppWrapperSync() {
return (
<AppProvider id={APP_ID}>
<UserProvider fallback={LogIn}>
<RealmProvider sync={{flexible: true}}>
<App />
</RealmProvider>
</UserProvider>
</AppProvider>
);
}
// Create a configuration object
const realmConfig: Realm.Configuration = {
schema: [WeatherSensor],
};
// Create a realm context
const {RealmProvider, useRealm} = createRealmContext(realmConfig);
// Expose a sync realm
function AppWrapperSync() {
return (
<AppProvider id={APP_ID}>
<UserProvider fallback={LogIn}>
<RealmProvider sync={{flexible: true}}>
<App />
</RealmProvider>
</UserProvider>
</AppProvider>
);
}

Ao contrário da sincronização bidirecional, o arquivo de dados não usa uma assinatura Flexible Sync.

Não é possível executar uma query em um objeto assimétrico ou escrevê-lo em um Realm local, portanto, objetos assimétricos são incompatíveis com o Flexible Sync bidirecional, a sincronização baseada em partição ou o uso de Realm local.

4

Depois de abrir um Realm, você pode criar um objeto assimétrico dentro de uma transação de escrita usando Realm.create(). Ao criar um objeto assimétrico, o Realm.create() retorna undefined em vez do próprio objeto.

const App = () => {
// Getting access to our opened realm instance
const realm = useRealm();
const handleAddSensor = () => {
realm.write(() => {
realm.create('WeatherSensor', {
_id: weatherSensorPrimaryKey,
deviceId: 'WX1278UIT',
temperatureInFahrenheit: 66.7,
barometricPressureInHg: 29.65,
windSpeedInMph: 2,
});
});
};
return (
<Button
title='Add A New Sensor'
onPress={() => handleAddSensor()}
/>
);
};

Você não pode ler esses objetos. 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.

Voltar

Definir o nível de log do cliente

Próximo

Guias de integração