syncDocument method

Future<DynamicMap?> syncDocument(
  1. ModelAdapterDocumentQuery query,
  2. DynamicMap? value, {
  3. String? prefix,
})

Stores value in the path corresponding to query and then returns value.

Used to synchronize NoSqlDatabase with other databases.

prefix can be specified to prefix the path.

queryに対応するパスにvalueを格納してからvalueを返します。

他のデータベースとNoSqlDatabaseを同期するために利用します。

prefixを指定するとパスにプレフィックスを付与可能です。

Implementation

Future<DynamicMap?> syncDocument(
  ModelAdapterDocumentQuery query,
  DynamicMap? value, {
  String? prefix,
}) async {
  _addDocumentListener(query, prefix: prefix);
  await _initialize();
  final trimPath = _path(query.query.path, prefix);
  final paths = trimPath.split("/");
  if (paths.isEmpty) {
    return value;
  }
  value = Map.from(value ?? {})..removeWhere((key, value) => value == null);
  if (value.isEmpty) {
    data._deleteFromPath(paths, 0);
    onDeleted?.call(this);
    return null;
  }
  data._writeToPath(paths, 0, value);
  await onSaved?.call(this);
  return value;
}