如何用ESP8266创建Firestore自定义ID文档?请求返回错误-5
问题:ESP8266 01S通过HTTPClient向Firestore发送PATCH请求返回错误-5
场景说明
我是Firebase新手,在Arduino项目中使用ESP8266 01S模块,想要硬编码一个设备ID,以此ID在Firestore的fishtanks集合下创建(不存在则创建)对应文档。
当前代码
使用ESP8266HTTPClient发送PATCH请求,代码如下:
HTTPClient http; String url = "https://firestore.googleapis.com/v1/projects/" FIRESTORE_PROJECT_ID "/databases/(default)/documents/fishtanks/" + tankId + "?key=" + FIREBASE_API_KEY; http.begin(client, url); String jsonData = "{\"fields\": {" "\"tankId\": {\"stringValue\": \"" + tankId + "\"}," "\"userId\": {\"nullValue\": null}," // Initialize as null "\"size\": {\"nullValue\": null}," // Initialize as null "\"watertype\": {\"nullValue\": null}" // Initialize as null "}}"; httpResponseCode = http.sendRequest("PATCH", jsonData);
问题现象
运行代码后,httpResponseCode返回错误码**-5**。
预期文档结构
当tankId为TankId_1时,预期Firestore中生成的文档结构如下:
"fishtanks": { "TankId_1": { "TankId": "TankId_1", "userId": "user_123", "size": null, "watertype": "freshwater" } }
补充验证
已通过Postman发送相同逻辑的PATCH请求成功生成自定义ID的文档:
- 请求地址:
https://firestore.googleapis.com/v1/projects/FIRESTORE_PROJECT_ID/databases/(default)/documents/fishtanks/MY_CUSTOM_TANK_ID - 请求体:
{ "fields": { "TankId": { "stringValue": "MY_CUSTOM_TANK_ID" }, "UserId": { "nullValue": null }, "TankSize": { "nullValue": null }, "WaterType": { "nullValue": null } } }
怀疑方向
怀疑是ESP8266HTTPClient处理HTTPS请求时出现问题。
内容的提问来源于stack exchange,提问作者Joaquin Hazzi
相关产品推荐
相关产品推荐

