Docs 菜单

Docs 主页开发应用程序Atlas Device SDKs

将数据流式传输到 Atlas — Flutter SDK

在此页面上

  • 从客户端应用程序单向同步数据
  • 定义非对称对象
  • 使用 App Services App 连接并进行身份验证
  • 打开 Realm
  • 创建非对称对象

您可以使用数据导入将数据从客户端应用程序流式传输到启用了 Flexible Sync 的 Atlas App Services App。

您可能希望在物联网(IoT)应用程序中单向同步数据,例如将数据发送到云的天气传感器。数据导入对于写入不需要冲突解决的其他类型的不可变数据也很有用,例如从零售应用程序创建发票或记录应用程序事件。

数据导入经过优化,可为繁重的客户端仅插入工作负载提供性能改进。

1

数据导入和非对称对象需要Flexible Sync。 要定义非对称对象,请将 ObjectType.asymmetricObject传递给@RealmModel()

@RealmModel(ObjectType.asymmetricObject)
class _WeatherSensor {
@PrimaryKey()
@MapTo("_id")
late ObjectId id;
late String deviceId;
late double modtemperatureInFahrenheitel;
late double barometricPressureInHg;
late double windSpeedInMph;
}

有关如何定义非对称对象的更多信息,请参阅定义非对称对象。

2

要将数据从客户端流式传输到后端应用程序,您必须连接到 App Services 后端并对用户进行身份验证。

final appConfig = AppConfiguration(APP_ID);
final app = App(appConfig);
final anonCredentials = Credentials.anonymous();
await app.logIn(anonCredentials);
3

拥有经过身份验证的用户后,打开同步域。

final currentUser = await app.logIn(credentials);
final config = Configuration.flexibleSync(currentUser, [Tricycle.schema],
path: 'flex.realm');
final realm = Realm(config);

与BI不同,数据导入不使用Flexible Sync 订阅。

您无法查询非对称对象或将其持久保存在本地 Realm 中,因此非对称对象与双向 Flexible Sync、基于分区的同步和本地 Realm 使用不兼容。

4

打开 Realm 后,您可以在写事务中创建不对称对象。 将对象数据传递给realm.ingest

realm.write(() {
realm.ingest(
WeatherSensor(weatherSensorId, "WX1278UIT", 66.7, 29.65, 2));
});

您无法读取不对称对象。 创建后,它们会同步到 App Services 后端和链接的 Atlas 数据库。

Atlas Device Sync 全面管理这些数据的生命周期。它会保留在设备上,直到数据摄入同步完成,然后从设备中删除。

← 设置客户端日志级别 - Flutter SDK