我正在使用php sdk从firestore数据库中删除某些字段。 我想要从文档内的数组中删除一个map,但是使用的函数删除了父级数组内的所有map。
我的firestore数据库如下图所示:
我尝试删除特定索引(例如:索引0及其子元素)的imageUrls数组,而不是其中的所有map。
我尝试了以下两个函数:
我的firestore数据库如下图所示:
![firebase database](https://istack.dev59.com/QODgw.webp)
我尝试了以下两个函数:
$usersRef->update([
['path' => 'imageUrls.image_url', 'value' => FieldValue::arrayRemove(['image.png'])]
]);
并且这一个
$usersRef->update([
['path' => 'imageUrls.image_url', 'value' => FieldValue::deleteField()]
]);
第一个函数会删除所有的图片链接子元素,并将图片链接数组转换为映射类型;而第二个函数则没有发生任何事情。文档中仍然存在所有字段,没有进行任何删除操作。
<?php
namespace App\Services;
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Firestore\FieldValue;
use Google\Cloud\Firestore\FieldPath;
class FirebaseService
{
public function delete()
{
// Create the Cloud Firestore client
$db = new FirestoreClient(
['projectId' => 'MyProjectId']
);
$usersRef = $db->collection('NewStories')->document('1');
$usersRef->update(
[
['path' =>'imageUrls.image_url',
'value' => FieldValue::arrayRemove(['image.png'])]
]);
}
}