Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何在javascript中删除firestore中索引处的数组元素_Firebase_Google Cloud Firestore - Fatal编程技术网

Firebase 如何在javascript中删除firestore中索引处的数组元素

Firebase 如何在javascript中删除firestore中索引处的数组元素,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个由数组填充组成的集合检查,填充中有一些对象我想匹配填充中的数据并删除firestore中索引的值。arrayRemove()仅适用于要删除的数组项的完整值。按索引删除项目不起作用。事实上,Firestore不提供任何通过索引直接修改数组项的方法 您需要做的是读取文档,根据需要修改内存中的“填充”数组,然后使用新值将文档更新回文档。如果这对您有效,请使用映射而不是数组,必要时放入虚拟值。然后可以直接删除该字段 var arr = [ "GKRLrcpSL2BmKx3BfvWj","


我有一个由数组填充组成的集合检查,填充中有一些对象我想匹配填充中的数据并删除firestore中索引的值。arrayRemove()仅适用于要删除的数组项的完整值。按索引删除项目不起作用。事实上,Firestore不提供任何通过索引直接修改数组项的方法


您需要做的是读取文档,根据需要修改内存中的“填充”数组,然后使用新值将文档更新回文档。

如果这对您有效,请使用映射而不是数组,必要时放入虚拟值。然后可以直接删除该字段

    var arr = [ "GKRLrcpSL2BmKx3BfvWj","fMwH404fweoFJJqyE5Nf" , "DTurwbw64CWw4WosUQtC" ] //
arr.forEach((element) => {
    console.log(element);
    db.collection("Check").doc(element).get().then((docs) => {
        var data = docs.data();
        var arr = data.fill;
        arr.forEach((item) => {
            if(item['check'] == 'a') {
                db.collection("Check").doc(element).update({
                    fill: firebase.firestore.FieldValue.arrayRemove('check')
                }).then((val)  => {console.log("Updated")})
            }
        });
    });
});

我的解决方案基于指定要删除的项目ID,例如:

fill: {
  a: xxx,
  b: xxx,
  check: xxx
}

db.collection("Check").doc(element).update({
  fill.check: firebase.firestore.FieldValue.delete()
})
 firebase
        .firestore()
        .collection('projects')    // Collection
        .doc(project.id)           // ID string
        .delete()                  // Promise