Flutter中如何使用MongoDB Realm

在Flutter项目中集成MongoDB Realm时遇到几个问题:

  1. 官方文档提到的Realm SDK是否支持Flutter?是否有专门的Flutter插件?
  2. 如何正确配置MongoDB Realm的App ID和初始化步骤?
  3. 数据同步功能是否需要额外设置?离线优先模式如何实现?
  4. 在Dart代码中操作Realm数据库时,与原生Android/iOS的API差异大吗?
    目前尝试用realm_dart包但连接总是失败,求具体的集成示例和常见错误解决方案。
2 回复

Flutter中可通过MongoDB Realm SDK连接数据库。安装realm_dart包,初始化Realm应用并配置数据模型。支持本地和云端数据同步,实现离线操作与实时更新。

更多关于Flutter中如何使用MongoDB Realm的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用MongoDB Realm(现称为Atlas Device SDK)可以通过以下步骤实现:

  1. 添加依赖pubspec.yaml 中添加依赖:

    dependencies:
      realm: ^1.0.0
    
  2. 初始化Realm

    import 'package:realm/realm.dart';
    
    final config = Configuration.local([Car.schema]);
    final realm = Realm(config);
    
  3. 定义数据模型

    [@RealmModel](/user/RealmModel)()
    class _Car {
      @PrimaryKey()
      late String id;
      late String make;
      late String model;
    }
    
  4. 基本操作示例

    // 写入数据
    realm.write(() {
      realm.add(Car(ObjectId(), 'Toyota', 'Camry'));
    });
    
    // 查询数据
    final cars = realm.all<Car>();
    final toyotas = realm.query<Car>('make == "Toyota"');
    
    // 更新数据
    realm.write(() {
      car.model = 'Corolla';
    });
    
    // 删除数据
    realm.write(() {
      realm.delete(car);
    });
    
  5. 同步配置(可选) 如需与Atlas同步,使用柔性同步:

    final config = Configuration.flexibleSync(user, [Car.schema]);
    final realm = Realm(config);
    
    // 订阅查询
    final subscriptions = realm.subscriptions;
    realm.update(() {
      subscriptions.update((mutableSubscriptions) {
        mutableSubscriptions.add(realm.all<Car>());
      });
    });
    

注意:

  • 需要先在MongoDB Atlas创建应用并配置数据模型
  • 支持本地数据库和云端同步
  • 实时查询需要维护订阅

建议参考官方文档获取最新配置细节和最佳实践。

回到顶部