Как удалить конкретный узел в FireBase? - PullRequest
0 голосов
/ 15 июня 2019

Я подключил FireBase и сделал сохранение данных в нем. Но я не могу удалить конкретную запись в firebase.

Я попытался удалить через метод, который я написал ниже. Но это не работает.

final FirebaseDatabase _database = FirebaseDatabase.instance;
delData(String phoneNumber) {_database.reference()
.child('phoneNumber')
.remove()
.then((_) {
    print("Delete $phoneNumber successful");
    setState(() {
      // 
    });
  });
}

Обновление

метод, который мне посоветовал Фрэнк ван Пуффелен, не работает корректно, он удаляет все записи с полем phoneNumber, и мне нужно удалить запись с номером телефона, под которым пользователь авторизован. Кроме того, метод прослушивает при добавлении новых заметок в поле phoneNumber и автоматически удаляет их

removeNode() {
    FirebaseDatabase.instance.reference()
        .child('customers')
        .orderByChild('phoneNumber')
        .equalTo(phoneNumber)
        .onChildAdded.listen((Event event) {
      FirebaseDatabase.instance.reference()
          .child('customers')
          .child(event.snapshot.key)
          .remove();
    }, onError: (Object o) {
      final DatabaseError error = o;
      print('Error: ${error.code} ${error.message}');
    });
  }````
// This is how is i add data to DB     
   ````void handleSubmit() {
      final FormState form = formKey.currentState;
      print(userPhone);
      if (form.validate()) {
        form.save();
        form.reset();
        itemRef.push().set(item.toJson());}````

this is what i want to delete

Может, мне стоит воспользоваться пожарным магазином?

1 Ответ

1 голос
/ 15 июня 2019

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

Таким образом, в вашем случае, если вы знаете номер телефона узла, который хотите удалить, вы можете запросить все узлы с этим номером телефона (поскольку их может быть несколько), а затем удалить их.

Код для этого будет выглядеть примерно так:

FirebaseDatabase.instance.reference()
  .child('customers')
  .orderByChild('phoneNumber')
  .equalTo('+79644054946')
  .onChildAdded.listen((Event event) {
    FirebaseDatabase.instance.reference()
      .child('customers')        
      .child(event.snapshot.key)
      .remove();
  }, onError: (Object o) {
    final DatabaseError error = o;
    print('Error: ${error.code} ${error.message}');
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...