firebase 按索引从字段数组中删除对象

Posted

技术标签:

【中文标题】firebase 按索引从字段数组中删除对象【英文标题】:firebase delete object from field array by index 【发布时间】:2021-06-06 19:35:06 【问题描述】:

如何通过数组索引从数组字段中删除对象?或建议其他方式!

我想从文件数组中选择对象并删除!

【问题讨论】:

【参考方案1】:

云 Firestore 中的数组中没有 choose and delete 方法。您可以做的是将该数组放入一个临时数组,然后从数组中删除您需要删除的对象,并用您新更新的临时数组覆盖文档array field

const deleteObjFromArr = async (index) => 
    try 
        /*
         * Get the files array to a temporary array.
         * If you have already gotten the document to an object,
         * assign the object field to the temporary array
         */
        
        const docRef = firebase.firestore().collection('tasks-collection').doc('tasks');
        const tempArr = (await docRef.get()).files;
        
        // Remove object from array
        tempArr.splice(index, 1);
        
        // Save new array in cloud firestore
        await docRef.update( files: tempArr );
        console.log('Files array updated successfully');
        
     catch (err) 
        console.log('Error occured. Operation terminated.');
        console.log(err);
    

        

【讨论】:

现在我遇到了另一个问题,我意识到按索引删除是个坏主意,因为删除后索引无论如何都会改变,也许可以通过数组中的某个关键字找到并删除整个数组元素? 是的@AwKingOftheworld,你可以。您可以使用数组的filter 方法过滤掉没有该查找键的数组。 tempArr = tempArr.filter(e => e.attributeName != findingKeyword)

以上是关于firebase 按索引从字段数组中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

根据索引从数组中删除对象

Firebase firestore 从字段数组中删除项目

Firebase:从数组中删除对象

从过滤数组和主数组中删除相同的对象

从数组中按索引删除项目的更短方法[重复]

在firebase中的数组中添加一个字段而不删除firebase中的其他字段[重复]