Невозможно удалить пользователя области
Я вхожу в Realm с помощью SyncCredentials, позволяя создать пользователя, как показано ниже:
SyncCredentials credentials = SyncCredentials.usernamePassword(username, password, true);
SyncUser.logInAsync(credentials, AUTH_URL, new SyncUser.Callback<SyncUser>() {
}
И после того, как я хочу удалить этого пользователя в области с кодом ниже:
String id = SyncUser.current().getIdentity();
PermissionUser permissionUser = realm.where(PermissionUser.class).equalTo("id", id).findFirst();
if (permissionUser != null) {
permissionUser.getPrivateRole().removeMember(id);
permissionUser.getPrivateRole().deleteFromRealm();
if (permissionUser.getRoles() != null) {
permissionUser.getRoles().deleteAllFromRealm();
}
permissionUser.deleteFromRealm();
}
Этот код выполняется успешно, но я проверил на Realm Studio, этот пользователь все еще существует. Пожалуйста, помогите мне эту проблему, большое спасибо.
2 ответа
Все изменения в данных должны происходить в транзакции
источник: https://realm.io/docs/java/latest/
пример:
// obtain the results of a query
final RealmResults<Dog> results = realm.where(Dog.class).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// remove single match
results.deleteFirstFromRealm();
results.deleteLastFromRealm();
// remove a single object
Dog dog = results.get(5);
dog.deleteFromRealm();
// Delete all matches
results.deleteAllFromRealm();
}
});
Спасибо за всех, но я нашел решение здесь:
String url = RealmConstants.AUTH_URL + "/user/" + SyncUser.current().getIdentity();
OkHttpClient okHttpClient = RetrofitClient.ClientHolder.getOkHttpClient();
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", token.value())
.addHeader("Accept", "application/json, text/plain, */*")
.addHeader("Content-Type", "application/json")
.delete()
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
callback.onFailure(new ClientError(e.hashCode(), e.getMessage()));
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
callback.onSuccess(null);
}
});