繁体   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