![](/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.