Почему мои данные удаляются, когда я обновляю определенное поле в базе данных в реальном времени в flutter для Интернета

# #flutter #http #dart #firebase-realtime-database #web-applications

Вопрос:

Я пытаюсь обновить свои данные в базе данных в реальном времени в flutter для веб-приложения. Но всякий раз, когда я обновляю свои данные, он удаляет все остальные поля в той же таблице.

 ChangeNotificationStatus() async {
    Map NotificationData = {
      "NotificationChecked": "YES",
    };
    await put(
        Uri.parse(
            "https://officialnasproject-default-rtdb.firebaseio.com/App/Notification.json"),
        body: jsonEncode(NotificationData));
  }
 

Образ базы данных

Ответ №1:

Всякий раз, когда вы put указываете путь в базе данных, данные, которые вы предоставляете в запросе, заменяют все существующие данные в этом пути.

Если вы хотите обновить только одно свойство, у вас есть два варианта:

  • Вы можете put добавить это единственное значение в путь более низкого уровня:
     await put(
      Uri.parse(
        "https://officialnasproject-default-rtdb.firebaseio.com/App/Notification/NotificationChecked.json"),
      body: jsonEncode("YES"));
    }
     
  • Вы можете использовать patch , который заменяет только ключи, которые у вас есть на вашей NotificationData карте, и оставляет другие ключи неизмененными.

Для получения дополнительной информации об этих операциях я рекомендую прочитать документацию Firebase по API REST базы данных реального времени.