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

Firebase实时数据库C++更新:URL拼接ID失败问题排查

问题分析与修复方案

核心问题

  1. URL格式错误:Firebase实时数据库修改指定ID节点的正确URL格式应为 https://<数据库地址>/Admin/<节点ID>.json,你当前把ID直接拼在.json之后,导致路径变为Admin.json-xxx,不符合Firebase的API规范。
  2. 字符串拼接类型不匹配:C风格字符串字面量和std::string直接相加会引发编译错误,两者类型不兼容。

修复后的代码

void DatabaseHandler::AddAdmin(QString name, QString password, 
QString email, QString Geburtsdatum){
    m_networkManager = new QNetworkAccessManager( this);

    QVariantMap newAdmin;
    newAdmin["Name"] = name;
    newAdmin["Password"] = password;
    newAdmin["Email"] = email;
    QJsonDocument jsonDoc = QJsonDocument::fromVariant( newAdmin );
    
    std::string id = "-N7pPxSHoPVlyEi8e0xW";
    // 修正URL格式并处理字符串拼接类型
    std::string urlStr = "https://gymmanagment-a6c01-default-rtdb.europe-west1.firebasedatabase.app/Admin/" + id + ".json";
    QNetworkRequest newAdminRequest(QUrl(QString::fromStdString(urlStr)));

    newAdminRequest.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json"));
    m_networkManager->put(newAdminRequest, jsonDoc.toJson() );
}

注意事项

  • 确保Firebase数据库规则允许对Admin节点执行写入操作,否则会返回权限错误。
  • 建议将m_networkManager改为类成员变量复用,避免每次调用函数都新建对象造成内存泄漏。
  • 若ID为动态获取,需确保其格式合法,不能包含Firebase路径禁止的字符(如.、#、$、[、]等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:39:29