У меня есть следующий код, который позволяет пользователям обновлять свои данные:
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
}
}
});
Единственный способ, с помощью которого я нашел решение этой проблемы, - это удаление / переустановка приложения. Что вызывает это? И есть ли хороший способ исправить это?