Cloud Firestore добавляет несколько документов с помощью REST API - PHP - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь добавить несколько документов в одно соединение с помощью REST API облачного хранилища Google. Я могу сделать это для одного документа, но когда я пытаюсь добавить более одного, я получаю сообщение об ошибке.

Код, который я использую для добавления одного документа

$data = array(
    'fields' => array(
        'Field1' => array(
            'stringValue' => 'deneme'
        ),
        'Field2' => array(
            'stringValue' => 'deneme2'
        )
    ),
);

//$data = array_values($data);
$data_string = json_encode($data); 
echo $data_string;


curl_setopt($ch, CURLOPT_URL, 'https://firestore.googleapis.com/v1beta1/projects/***/databases/(default)/documents/deneme/DEN6600011/TARIH');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);   

$headers = [
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
    'Authorization: Bearer (MY-API-KEY)'
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$sonuc = curl_exec($ch);

curl_close($ch);

echo $sonuc;

Я пытался сделайте это, изменив массив данных, как это, но в это время я получаю сообщение об ошибке.

$data = array(
    "documents" => array(
    array('fields' => array(
        'Field1' => array(
            'stringValue' => 'deneme'
        ),
        'Field2' => array(
            'stringValue' => 'deneme2'
        )
    )),
    array('fields' => array(
        'Field1' => array(
            'stringValue' => 'deneme'
        ),
        'Field2' => array(
            'stringValue' => 'deneme2'
        )
    )),
));

Ошибка:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"documents\" at 'document': Cannot find field.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "document",
            "description": "Invalid JSON payload received. Unknown name \"documents\" at 'document': Cannot find field."
          }
        ]
      }
    ]
  }
}

Я пробовал другими способами, но у меня возникли ошибки все они. Как я могу добавить несколько данных, используя один JSON с REST API?

1 Ответ

1 голос
/ 25 мая 2020

Вы можете использовать update для создания нескольких документов, операция обновления создаст документ, который не существует, вы также должны предоставить идентификатор документа. Аналогичный вопрос был задан здесь

В качестве альтернативы вы можете попробовать использовать PHP Библиотеку .

Используя create или set , вы сможете создать несколько документов за один запрос.

Что касается проблемы с вашим текущим способом, это, скорее всего, из-за того, что тело запроса json не в порядке определено.

...