Realm + RXJava中的CRUD

时间:2018-01-10 14:00:01

标签: java android realm rx-java

问题是我之前以这种方式删除并更新了Realm中的记录:

public <T extends RealmObject> void deleteDataById(String publicId, Class<T> clazz){
    Realm realm = Realm.getDefaultInstance();

    realm.executeTransactionAsync(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {

            RealmResults<T> result = realm.where(clazz).equalTo("publicId", publicId).findAll();
            result.deleteAllFromRealm();
        }
    });
}

public <T extends RealmObject> void updateData(T object) {
    try (Realm realmInstance = Realm.getDefaultInstance()) {
        realmInstance.executeTransaction(realm -> {
            Log.d(LOG_TAG, "updateData");
            realm.insertOrUpdate(object);
        });
    }
}

但是,由于我正在学习RXJava,我决定重新制作CRUD下的RXJava作业。

以下是我写入数据库的方式:

public <T extends RealmObject> Flowable<RealmResults<T>> getAllData(Class<T> clazz) {
    Realm realm = Realm.getDefaultInstance();
    RealmQuery<T> query = realm.where(clazz);

    if(realm.isAutoRefresh()) {
        Log.d(LOG_TAG, "getData isAutoRefresh()");
        return query.findAllAsync().asFlowable().filter(RealmResults::isLoaded);

    } else {
        Log.d(LOG_TAG, "getData, !isAutoRefresh()");
        return Flowable.just(query.findAll());
    }
}

一方面,我正在考虑离开UpdateDelete操作,因为它们没有返回任何内容,但另一方面,我认为它们至少应该返回结果操作。也许我没有正确地介绍。

我尝试使用Flowable.defer()Flowable.just(),但flatMap()仍有错误:

  Flowable中的

flatMap(io.reactivex.functions.Function&gt;)不能   适用于(匿名   io.reactivex.functions.Function)

这就是我试图制作的:

public Flowable deleteDataById(String publicId) {
    Realm realm = Realm.getDefaultInstance();

    return realm.asFlowable()
            .flatMap(new Function<Realm, Boolean>() {
                @Override
                public Boolean apply(Realm realm) throws Exception {
                    return realm.where(ServiceModel.class)
                            .equalTo("publicId", publicId)
                            .findAll()
                            .deleteAllFromRealm();
                }
            })  
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}

问题:

  1. 关于UpdateDelete
  2. ,我的观点是否正确
  3. 如何正确更改Update下的DeleteRX

0 个答案:

没有答案