如何将数据发布到firestore以避免不存在的文档?

问题描述 投票:0回答:2

我有一个与此类似的数据结构,我想通过 REST API 将其发布到 firestore 数据库:

我手动创建了

House1
文档,然后是
Floor1
Ground

Ground
包含数据:

R 中的 REST API

现在,我正在尝试使用 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 请求以确保正确创建文档以便可以查询它们?

r google-cloud-firestore httr
2个回答
1
投票

您需要为此嵌套结构中的每个文档执行单独的 POST 调用。没有单个 API 调用可以创建深度嵌套的子文档和所有父文档。


1
投票

我认为你不需要改变

post_data_to_firestore
。您只需为要创建的每个单独文档调用一次即可。 Firestore 不会自动在路径中间创建文档。它只会为您在请求中提供的一个路径创建一个文档。

© www.soinside.com 2019 - 2024. All rights reserved.