簡體   English   中英

如何手動設置保存調用 Firestore API 的新文檔的 Firestore 文檔 ID?

[英]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?

查看創建文檔的文檔 如果你想指定一個文檔 ID,它說你應該將它作為一個名為documentId查詢參數傳遞:

用於此文檔的客戶端分配的文檔 ID。

選修的。 如果未指定,則服務將分配一個 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM