Запросы синхронизированных областей возвращают только объекты, созданные в этой функции - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь запросить область, но мой список RealmResults из запроса никогда не содержит правильный список.Я использую Realm Studio, чтобы увидеть мою базу данных.Добавление объектов в базу данных работает нормально.Но по какой-то причине запросы вообще не работают.Например, вот мой код.config - это переменная класса.Вход в систему находится внутри функции OnClick.

private static SyncConfiguration config;
private Realm realm;


SyncCredentials credentials = SyncCredentials.usernamePassword(loginEmail,loginPass,false);
            SyncUser.logInAsync(credentials, AUTH_URL, new SyncUser.Callback<SyncUser>() {
                @Override
                public void onSuccess(SyncUser result) {

                    user = result;
                    config = result.createConfiguration(REALM_url).build();
                    Realm.setDefaultConfiguration(config);

                    Realm.setDefaultConfiguration(config);
                    realm = Realm.getInstance(config);
                    realm.beginTransaction();
                    User user = realm.createObject(User.class, "yolo");
                    user.setEmail(loginEmail);
                    user.setPassword(loginPass);
                    realm.commitTransaction();


                    //query is for debugging
                    RealmQuery<User> query = realm.where(User.class);
                    query.equalTo("age", 0);
                    RealmResults<User> results = query.findAll();
                    realm.close();
                }

                @Override
                public void onError(ObjectServerError error) {
                    //emailText.setError("Retry Login");
                    //emailText.requestFocus();
                    Log.e("Login Error", error.toString());
                }
            });

Когда я выполняю этот запрос, у меня 10 пользователей, все с нулевым возрастом.Возвращаемый размер равен 1. Если я поместил цикл вокруг транзакции, и он зациклился 3 раза, результат будет 3.

Если я инициализирую область точно таким же образом, используя ту же конфигурацию, вс другой функцией, он возвращает список размером 0, хотя теперь размер равен 10 после предыдущего коммита.Я понятия не имею, в чем проблема.Поскольку коммиты работают, я знаю, что проблема не в неправильных URL.Я использую запросы точно так же, как их документация.Я настроил это в точности как их документация и их пример.Я в полной растерянности.

Теперь также происходит, что выполнение запросов в отдельной функции дает мне «неспособность оценить метод выражения, бросил« java.lang.IllegalStateException », который не генерируется findAll () согласно их документации..

...