Firestore: запись ключа не существует в предоставленном массиве
Может ли кто-нибудь сказать мне, что пытается сказать мне следующее сообщение об ошибке?
Фатальная ошибка: Неперехваченное исключение 'InvalidArgumentException' с ключевое сообщение-пишет не существует в массиве.' в / vendor / google / cloud / Core / src / ArrayTrait.php: 38
Stack trace:
#0 /vendor/google/cloud/Firestore/src/Connection/Grpc.php(127): GoogleCloudFirestoreConnectionGrpc->pluck('writes', Array)
#1 /vendor/google/cloud/Firestore/src/WriteBatch.php(381): GoogleCloudFirestoreConnectionGrpc->commit(Array)
#2 import.php(45): GoogleCloudFirestoreWriteBatch->commit()
#3 {main} thrown in /vendor/google/cloud/Core/src/ArrayTrait.php on line 38
Мой код выглядит так:
$batch = $project->db->batch();
foreach($memberList as $member){
$addedDocRef = $collection->newDocument();
$data["id"] = $addedDocRef->id();
$data["creation"] = $this->generateCreation();
$data["publication"] = $this->generatePublication();
$batch->create($addedDocRef, $data);
}
$batch->commit();
1 ответ:
Он сообщает вам, что вы выполняете коммит, но пакет не содержит никаких операций. Вероятно, когда ваш $memberList пуст, эта ошибка появляется. Простой способ предотвратить ошибку:
if (! empty($memberList)) { $batch->commit(); }
Кроме того, вы уверены, что $batch->create() существует? Вы должны использовать метод set (). Вот последний firestore doc:
$batch = $db->batch(); # Set the data for NYC $nycRef = $db->collection('cities')->document('NYC'); $batch->set($nycRef, [ 'name' => 'New York City' ]); # Update the population for SF $sfRef = $db->collection('cities')->document('SF'); $batch->update($sfRef, [ ['path' => 'population', 'value' => 1000000] ]); # Delete LA $laRef = $db->collection('cities')->document('LA'); $batch->delete($laRef); # Commit the batch $batch->commit();