При сохранении пользователя с уже существующим адресом электронной почты или именем пользователя ParseUser возвращает неправильное значение - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть следующий код, который позволяет пользователям обновлять свои данные:

String username = "Any username that is currently already used by another user";

ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser != null) {
    currentUser.setUsername(username);

    currentUser.saveInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e == null) {
                // All good!
            } else {
                // Error: Account already exists for this username.
                Log.e("Error: ", e.getMessage());
            }
        }
    }
});

Когда пользователь пытается обновить имя пользователя тем, которое уже используется кем-то другим, он выдает ошибку:

Учетная запись для этого имени пользователя уже существует.

Это именно то, чего я бы хотел, но когда пользователь возвращается (без повторного запроса на изменение имени пользователя на доступное), ParseUser.get("username") возвращает значение, которое не было сохранено, потому что оно уже существует (вместо реального значения, хранящегося в данный момент на сервере).

ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.fetchInBackground(new GetCallback<ParseUser>() {
    public void done(ParseUser user, ParseException exception) {
        if (exception == null) {
            // username now returns ("Any username that is currently already used by another user").
            String username = user.get("username").toString().trim();
        } else {
            // Error
        }
    }
});

Единственный способ, с помощью которого я нашел решение этой проблемы, - это удаление / переустановка приложения. Что вызывает это? И есть ли хороший способ исправить это?

...