![](/img/trans.png)
[英]How to add Document with Custom ID to firestore in firestore 9
[英]How to manually set the Firestore document ID saving a new document calling Firestore API?
我發現以下問題試圖將新文檔保存到 Firesotore 數據庫中,調用相關的 POST API 並手動設置文檔 ID。
我正在使用 Python 但我認為問題與語言無關。
我試着解釋我做了什么,什么沒有用。 我的第一次嘗試(有效但自動在 Firestore 上設置文檔 ID)是:
首先,我創建了這個 JSON 文檔,它將成為我的 API 的有效載荷:
# Convert the record to a dictionary
doc = {
'fields': {
'surname': {'stringValue':record[2]},
'firstName': {'stringValue':record[1]},
'socialSecurityCode': {'stringValue':codici_fiscali_list_as_string},
'city': {'stringValue':record[4]},
'personalPhone': {'stringValue':record[5]},
'personalPhone2': {'stringValue':record[6]},
'personalEmail': {'stringValue':emails_list_as_string},
'pazPres': {'stringValue':record[7]},
'pazNotes': {'stringValue':record[8]},
'pazMemo': {'stringValue':record[9]},
'isArchived': {'booleanValue':isArchived},
'isMigrated': {'booleanValue':True},
#'decomposition_keyword_search_list':{'arrayValue':{'values':decomposition_keyword_search_list}}
"decomposition_keyword_search_list":{
"arrayValue":{
"values":[
]
}
}
}
}
然后我通過這些行執行 API 調用:
api_endpoint = 'https://firestore.googleapis.com/v1/projects/MY-PROJECT-NAME/databases/(default)/documents/test/'
response = requests.post(api_endpoint, json=doc)
它工作正常,並將預期的文檔放入我的測試集合中。 但是通過這種方式,ID 是由 Firestore 自動生成的。 出於某種原因,我必須使用變量的內容作為 ID(我的 ID 必須是我的記錄 [0]的值,這是一個唯一的字符串)
所以我嘗試通過以下方式更改之前的 API 端點:
api_endpoint = 'https://firestore.googleapis.com/v1/projects/MY-PROJECT-NAME/databases/(default)/documents/test/'+ record[0]
我預計它會使用record[0]作為文檔 ID 創建文檔,但似乎我錯了,因為我收到以下錯誤消息:
Error saving document: {
"error": {
"code": 400,
"message": "Document parent name \"projects/MY-PROJECT-NAME/databases/(default)/documents/test\" lacks \"/\" at index 71.",
"status": "INVALID_ARGUMENT"
}
}
那么,有什么問題嗎? 我錯過了什么? 如何正確手動設置我正在創建的文檔的 ID 調用以前的 API?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.