Обновление базы данных Firebase с помощью Android - PullRequest
0 голосов
/ 01 ноября 2018

Я использую этот метод для хранения данных в моей базе данных Firebase:

Сначала я храню все данные в классе модели, который называется SubjectDataModel, затем я получаю кнопку из базы данных Firebase.

и затем я устанавливаю значение для этого конкретного ключа.

Вот мой код:

SubjectDataModel:

public class SubjectDataModel {

    public String id;
    public String dbName;
    public String subName;
    public String tagline;
    public int preference;

    public SubjectDataModel()
    {

    }

    public SubjectDataModel(String id, String dbName, String subName, String tagline, int preference) {
        this.id = id;
        this.dbName = dbName;
        this.subName = subName;
        this.tagline = tagline;
        this.preference = preference;
    }
}

Затем я использую следующий код для отправки его в базу данных, а затем я также сохраняю идентификатор ключа локально.

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Data");
String id = ref.push().getKey();
SubjectDataModel newSub = new SubjectDataModel(id, txt_dbName, txt_subName, txt_tagline, txt_preference);
ref.child(id).setValue(newSub);

Теперь представьте, позже, я хочу обновить эти данные, поэтому у меня хранится идентификатор ключа, поэтому я могу получить к нему доступ, я также отредактировал все остальные данные локально, поэтому теперь, если я создаю объект SubjectDataModel с этими данными и снова выполняю ref.child(id).setValue(newSub); с сохраненным идентификатором, данные будут обновлен? Или есть другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Хорошо, я попробовал это, и оно отлично работает, как я и ожидал. Мне не нужно использовать карты или что-то еще. Самый простой способ обновления данных.

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Data");
SubjectDataModel newSub = new SubjectDataModel(idForUpdate, txt_dbName, txt_subName, txt_tagline, txt_preference);
ref.child(idForUpdate).setValue(newSub);

Итак, в основном, я создал объект с необходимыми данными и вернул его к тому же идентификатору, с которым я создал узел в базе данных Firebase, поэтому он обновляет этот же узел новыми значениями.

0 голосов
/ 01 ноября 2018

updateChildren () - это метод, который вы ищете, обратитесь к этой документации Чтение и запись данных Firebase на Android

Вот пример из документации ...

private void writeNewPost(String userId, String username, String title, String body) {
    // Create new post at /user-posts/$userid/$postid and at
    // /posts/$postid simultaneously
    String key = mDatabase.child("posts").push().getKey();
    Post post = new Post(userId, username, title, body);
    Map<String, Object> postValues = post.toMap();

    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put("/posts/" + key, postValues);
    childUpdates.put("/user-posts/" + userId + "/" + key, postValues);

    mDatabase.updateChildren(childUpdates);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...