Я делаю приложение для социальных сетей. Все пользовательские данные являются дочерними по отношению к объекту имени пользователя. Например
root:
+users:
+ricksanchez:
+name:"Rick Sanchez";
+email:"[email protected]";
+bio:"I'm super smart";
+followers:
+follower1:morty;
+follower2:summer;
....
Как изменить ключ риксанчеса без потери данных?
Можно ли переименовать ключ в базе данных Firebase Realtime?
Я ответил на этот вопрос, но я новичок в кодировании. Думаю, это не Java. Вы знаете, как это сделать на Java?
Я новичок в программировании. Я не понял, о чем здесь написано. Вы знаете, как это сделать на Java?
Ключи нельзя переименовать в Firebase. Это очень хороший пример того, почему ключи не должны быть связаны с данными, которые они содержат. См. Ответ на этот вопрос для более подробной информации.
Вы не можете изменить имя ключа, скажем, ricksanchez на другое. Для этого нет API. Если вы хотите изменить имя ключа, вам обязательно нужно скопировать этот конкретный объект в другое место, изменить имя, а затем удалить старую запись. Но просто изменить название ключа в Firebase невозможно.
Редактировать: Согласно вашему комментарию, используйте следующий метод, чтобы скопировать запись из одного места в другое.
private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
Log.d(TAG, "Success!");
} else {
Log.d(TAG, "Copy failed!");
}
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
Вы умеете копировать все данные. Я имею в виду, что у меня есть класс пользователя, в котором я могу хранить простую информацию, такую как имя, адрес электронной почты или пароль, но ключ имени пользователя также включает подписчиков, изображения и другие вещи. Как я могу скопировать все это и загрузить под другое имя пользователя?
По сути, это другой вопрос, но я обновил свой ответ с учетом вашего второго требования. Так что, пожалуйста, посмотрите мой обновленный ответ.
Если вы считаете, что мой ответ помог вам в решении первой и второй проблемы, примите его, нажав на галочку слева под стрелками голосования. Должен поменять цвет на зеленый. Буду признателен. Спасибо!
Привет, я использую ваш код, и он работает как шарм, но когда я запускаю ваш код во второй раз, не закрывая приложение, мое приложение вылетает. Вы знаете, почему?
Отправьте еще один свежий вопрос, включая всю ошибку, чтобы я и другие пользователи могли вам помочь.
Возможный дубликат Можно ли переименовать ключ в базе данных Firebase Realtime?