我有一个与此类似的数据结构,我想通过 REST API 将其发布到 firestore 数据库:
我手动创建了
House1
文档,然后是 Floor1
和 Ground
。
Ground
包含数据:
现在,我正在尝试使用 R 中的 firestore REST API 来创建相同的东西。
library(httr)
library(jsonlite)
# POST function
post_data_to_firestore <- function(path, data, auth_token) {
r <- httr::POST(
url = sprintf("https://firestore.googleapis.com/v1beta1/%s", path),
config = httr::add_headers(
"Content-Type" = "application/json",
"Authorization" = paste("Bearer", auth_token)
),
body = data
)
return(r)
}
PROJECT_NAME <- "firebase-project"
COLLECTION <- "Block"
accessTokenu <- "access-token"
endpoint <- paste0("projects/", PROJECT_NAME, "/databases/(default)/documents/", COLLECTION)
data_list <- toJSON(
list(
fields = list(
Name = list("stringValue" = "Ground")
)
), auto_unbox = TRUE
)
post_data_to_firestore(
path = paste0(endpoint, "/House2/Floor1", "?documentId=", "Ground"),
data = data_list,
auth_token = accessTokenu
)
这会创建
House2
,根据 firestore 的说法,这是一个不存在的文档。我知道我在这里创建的只是包含 Ground
的 Name
:
如何更改 POST 请求以确保正确创建文档以便可以查询它们?
您需要为此嵌套结构中的每个文档执行单独的 POST 调用。没有单个 API 调用可以创建深度嵌套的子文档和所有父文档。
我认为你不需要改变
post_data_to_firestore
。您只需为要创建的每个单独文档调用一次即可。 Firestore 不会自动在路径中间创建文档。它只会为您在请求中提供的一个路径创建一个文档。