You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web实时数据库更新某字段时其余数据被删除的原因是什么?

问题触发原因
  • Firebase 实时数据库的REST API中,PUT请求的逻辑是全量覆盖目标路径的所有节点数据:你当前请求的目标是/App/Notification根节点,传入仅包含NotificationChecked字段的结构执行PUT时,会直接清空该节点下原有所有字段,替换为你传入的新结构,这就是其他字段被删除的核心原因。
解决方案

有两种可行修复方式:

方案1:修改HTTP请求方法(适用直接调用REST API的场景)

将PUT请求改为PATCH请求即可,PATCH方法的作用是仅更新你传入的指定字段,不会修改目标节点下其他未声明的字段,修改后的代码示例:

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

方案2:使用Firebase官方Flutter SDK(更推荐)

如果项目已经集成了firebase_database官方SDK,直接使用封装好的update方法,不用手动处理HTTP协议差异,代码更易维护,示例如下:

import 'package:firebase_database/firebase_database.dart';

ChangeNotificationStatus() async {
  final notificationRef = FirebaseDatabase.instance.ref("App/Notification");
  await notificationRef.update({
    "NotificationChecked": "YES",
  });
}

注意:两种方案都需要确认你的Firebase实时数据库安全规则,已经开放了/App/Notification节点的写权限。

内容的提问来源于stack exchange,提问作者Anonymous Trap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:36:01