安装包 io.realm.mongodb

类应用


  • public class App
    extends Object
    应用程序是与MongoDB Realm 应用程序交互的主要客户端入口点。

    应用程序可用于:

    • 通过身份验证提供者( ApiKeyAuthEmailPasswordAuthImpl )注册使用并执行各种与用户相关的操作
    • 使用 Synchronized Realm 在本地设备和远程 Realm 应用之间同步数据
    • 调用 Realm App 函数 Functions
    • 从 MongoDB 数据库访问远程数据 MongoClient

    要创建与远程Realm 应用链接的应用,请初始化 Realm 并配置应用,如下所示:

        class MyApplication extends Application {
    
             App APP; // The App instance should be a global singleton
    
             \@Override
             public void onCreate() {
                 super.onCreate();
    
                 Realm.init(this);
    
                 AppConfiguration appConfiguration = new AppConfiguration.Builder(BuildConfig.MONGODB_REALM_APP_ID)
                         .appName(BuildConfig.VERSION_NAME)
                         .appVersion(Integer.toString(BuildConfig.VERSION_CODE))
                         .build();
    
                 APP = new App(appConfiguration);
             }
    
         }
     

    配置应用后,您可以开始管理用户、配置同步 Realm、调用远程 Realm 函数以及通过 Mongo 集合访问远程数据。 以下示例显示了不能从主线程使用的同步 API。 对于等效的异步对应项。 有关示例项目,请参阅 https://github.com/realm/realm-java/tree/v10/examples/mongoDbRealmExample。

    要注册新用户和/或使用现有用户登录,请执行以下操作:

         // 注册新用户 APP.getEmailPassword().registerUser(用户名, password); // 使用现有用户登录 User user = APP.login(Credentials.emailPassword(用户名, 密码))
     

    对于授权用户,您可以通过使用SyncConfiguration打开 Realm,在本地设备和远程 Realm 应用之间同步数据,如下所示:

         SyncConfiguration syncConfiguration = new SyncConfiguration.Builder(user, "<partition value>") .build();
    
         Realm 实例 = Realm.getInstance(syncConfiguration);
         SyncSession session = APP.getSync().getSession(syncConfiguration);
    
         instance.executeTransaction(realm -> { realm.insert(...); }); session.uploadAllLocalChanges();
         instance.close();
     

    您可以调用远程 Realm 函数,如下所示:

         Functions functions = user.getFunctions();
         Integer sum = functions.callFunction("sum", Arrays.asList(1, 2, 3, 4), Integer.class);
     

    并从远程 Realm 应用访问collection,如下所示:

         MongoClient client = user.getMongoClient(SERVICE_NAME)
         MongoDatabase database = client.getDatabase(DATABASE_NAME)
         MongoCollection<DocumentT> collection = database.getCollection(COLLECTION_NAME);
         Long count = collection.count().get()
     

    另请参阅:
    AppConfiguration.BuilderEmailPasswordAuthSyncConfigurationUser.getFunctions()User.getMongoClient(String)
    • 字段详细信息

      • NETWORK_POOL_EXECUTOR

        public static ThreadPoolExecutor NETWORK_POOL_EXECUTOR
        针对 MongoDB Realm 执行网络请求时使用的线程池。

        此池仅出于测试目的而公开,在队列非空时替换它将导致未定义的行为。

    • 构造函数详细信息

      • 应用

        公共应用( AppConfiguration配置)
        构造函数,用于根据给定的AppConfiguration创建应用程序
        参数:
        config - 用于此应用实例的配置。
        另请参阅:
        AppConfiguration.Builder
    • 方法详细信息

      • currentUser

        @Nullable public User currentUser()
        返回当前已登录且仍然有效的用户。

        当用户注销或用户的刷新令牌过期或被撤销时,该用户将失效。

        如果有两个或更多用户登录,则此方法将返回最后一个有效用户。

        返回:
        当前User已登录且仍然有效。 null如果没有用户登录或用户已过期)。
      • removeUser

        public User removeUser​( User user) 抛出AppException
        从此设备中删除用户档案。 如果用户当前已登录,他们将在此过程中注销。 这只是本地更改,不会影响服务器上的用户状态。
        参数:
        user - 删除
        返回:
        已删除的用户。
        抛出异常:
        AppException - 如果从用户界面线程调用,或者用户已登录但无法注销。
      • login

        公共用户登录(凭证凭证)抛出AppException
        以使用与身份验证提供者关联的给定档案的用户身份登录。

        登录的用户成为当前用户。 其他应用功能代表当前用户。

        如果已经存在一个当前用户,则该用户仍处于登录状态,并且可以在allUsers()返回的列表中找到。

        还可以使用switchUser(User)在将哪个用户视为当前用户之间进行切换。

        参数:
        credentials - 代表登录类型的凭证。
        返回:
        代表登录用户的User
        抛出异常:
        AppException - 如果用户无法登录。
      • loginAsync

        public RealmAsyncTask loginAsync​(Credentials credentials,
                                         App.Callback<User> callback)
        以使用与身份验证提供者关联的给定档案的用户身份登录。

        登录的用户成为当前用户。 其他应用功能代表当前用户。

        如果已经存在一个当前用户,则该用户仍处于登录状态,并且可以在allUsers()返回的列表中找到。

        还可以使用switchUser(User)在将哪个用户视为当前用户之间进行切换。

        参数:
        credentials - 代表登录类型的凭证。
        callback - 登录完成或失败时的回调。 回调将始终发生在调用此方法的同一线程上。
        抛出异常:
        IllegalStateException - 如果未在 Looper 线程上调用。
      • addAuthenticationListener

        public void addAuthenticationListener​(AuthenticationListener listener)
        设置全局身份验证侦听器,该侦听器将收到有关登录和注销等用户事件的通知。

        对身份验证侦听器的回调将在用户界面线程上进行。

        参数:
        listener — 要注册的侦听器。
        抛出异常:
        IllegalArgumentException - 如果listenernull
      • removeAuthenticationListener

        public void removeAuthenticationListener​(AuthenticationListener listener)
        删除提供的全局身份验证侦听器。
        参数:
        listener - 要删除的侦听器。
      • getSync

        公共同步getSync()
        返回管理正在进行的Realm Sync会话的Sync实例,这些会话在本地和与此应用关联的远程Realm 应用之间同步数据。
        返回:
        与此App关联的Sync实例。
      • getFunctions

        公共函数getFunctions​( User user, CodecRegistry codecRegistry)
        返回一个函数管理器,用于使用自定义编解码器注册表调用 Realm 应用的 Realm 函数,以对参数和结果进行编码和解码。
        另请参阅:
        Functions
      • getConfiguration

        public AppConfiguration getConfiguration()
        返回此应用的配置对象。
        返回:
        此应用程序的配置。
      • hashCode

        public int hashCode()
        覆盖:
        hashCode 课堂上 Object