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

Firebase Realtime Database按timeStamp删除帖子不生效问题求解

问题原因
  • 数据类型不匹配:你数据库中存储的timeStamp字段是长整型(数字类型,无引号包裹),但你equalTo方法传入的是字符串格式的时间戳(用双引号包裹了值)。Firebase Realtime Database的查询是严格匹配数据类型的,数字和字符串即使字面量相同也会被判定为不匹配,所以查询不到对应数据,删除逻辑自然无法触发。
  • 硬编码了时间戳值:你当前代码里写死了equalTo("1615602220595"),这个值和你示例数据里的帖子时间戳1594739760019、1594739763718都不一致,就算类型对了也查不到当前打开的帖子对应的数据。
解决办法
  1. 先将当前打开帖子的时间戳存为全局变量,你在onCreate中已经通过Intent拿到了postDate的long值,只需新增一个全局变量存储即可:
// 全局变量新增
long postTime;

// onCreate中赋值
postTime = getIntent().getExtras().getLong("postDate");
  1. 修改beginDelete方法里的查询逻辑,把字符串参数改为long类型的postTime:
Query fquery = FirebaseDatabase.getInstance().getReference("Posts")
    .orderByChild("timeStamp")
    .equalTo(postTime);

优化建议:timeStamp可能存在多个帖子时间戳完全一致的情况,会导致误删其他帖子。你已经持有当前帖子的唯一标识PostKey,直接通过key删除更稳妥,代码可以简化为:

FirebaseDatabase.getInstance().getReference("Posts")
    .child(PostKey)
    .removeValue()
    .addOnSuccessListener(aVoid -> {
        Toast.makeText(PostDetailActivity.this,"帖子已删除",Toast.LENGTH_SHORT).show();
    });

内容的提问来源于stack exchange,提问作者Eye Lamp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:04