Docs Menu
Docs Home
/ /
Sincronizar datos

Transmisión de datos a Atlas - SDK de Node.js

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.

1

Los objetos asimétricos sincronizan datos unidireccionalmente. Define un objeto asimétrico configurando asymmetric a true en su 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 obtener más información sobre cómo definir un objeto asimétrico, consulte Definir un objeto asimétrico.

2

Para transmitir datos desde el cliente a su aplicación backend, debe conectarse a un backend de App Services y autenticar a un usuario.

// Create an anonymous credential
const credentials = Realm.Credentials.anonymous();
const user = await app.logIn(credentials);
// Create an anonymous credential
const credentials = Realm.Credentials.anonymous();
const user = await app.logIn(credentials);

La ingesta de datos es una función de Flexible Sync, por lo que la aplicación a la que te conectas debe usar Flexible Sync.

3

Una vez que tenga un usuario autenticado, puede abrir un reino sincronizado usando un objeto de configuración de sincronización flexible.

const realm = await Realm.open({
schema: [WeatherSensor],
sync: {
user: app.currentUser,
flexible: true,
},
});

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 escribirlo 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 o el uso del ámbito local.

4

Una vez abierto un dominio, se puede crear un objeto asimétrico dentro de una transacción de escritura mediante Realm.create(). Al crear un objeto asimétrico, Realm.create() devuelve undefined en lugar del objeto en sí.

realm.write(() => {
realm.create(WeatherSensor, {
_id: new BSON.objectId(),
deviceId: "WX1278UIT",
temperatureInFahrenheit: 66.7,
barometricPressureInHg: 29.65,
windSpeedInMph: 2,
});
});

No se pueden leer estos objetos. 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.

Volver

Establecer el nivel de registro del cliente

En esta página