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

Uncaught TypeError错误修复:database_ref1.child(...).remove(...)不是函数

修复Uncaught TypeError: database_ref1.child(...).remove(...) is not a function错误

错误原因

你代码里的remove() ({}, (error) => {})是语法错误:remove()调用后返回的是Promise对象,不是函数,所以后面加括号会触发"不是函数"的错误。Firebase Realtime Database的remove()方法要么不带参数直接调用(用Promise处理结果),要么直接传入回调函数,不能先调用remove()再传参数。

修复方案

方案1:修正回调写法

去掉多余的括号,直接给remove()传入回调函数:

function deleteUser() {
    const user = firebase.auth().currentUser;
    
    user.delete().then(() => {
      // 用户账户删除完成
    }).catch((error) => {
      // 账户删除出错
      // ...
    });
    
    const database_ref1 = database.ref();
    // 修正语法:直接给remove传回调
    database_ref1.child('users/' + user.uid).remove((error) => {
        if (error) {
          // 数据库数据删除失败
          console.error('删除用户数据失败:', error);
        } else {
          // 数据库数据删除成功
          console.log('用户数据已删除');
        }
    });
}

方案2:用Promise统一处理异步操作

和user.delete()保持一致,用Promise的then/catch处理remove()结果,同时确保两个异步操作都完成:

function deleteUser() {
    const user = firebase.auth().currentUser;
    if (!user) return; // 先判断用户是否登录,避免null报错
    
    // 并行处理账户删除和数据库数据删除
    Promise.all([
        user.delete(),
        database.ref('users/' + user.uid).remove()
    ]).then(() => {
        console.log('用户账户及对应数据已全部删除');
    }).catch((error) => {
        console.error('删除操作失败:', error);
    });
}

这个方案能避免单个操作失败时出现数据不一致的情况,代码风格也更统一。

重要提醒

别忽略这个错误:虽然当前功能看似正常,但语法错误会导致数据库删除操作的结果处理逻辑完全失效,后续可能出现数据残留或报错的情况,必须修复。

内容的提问来源于stack exchange,提问作者Ling Travis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:25:04