Firebase 删除Firestore中数组处的索引

Firebase 删除Firestore中数组处的索引,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我在我的文档中获得了以下数据: 我想删除索引0。我该怎么做?这应该可以达到我想的效果: db.collection("data").document("free").updateData(["deleteme.deletemee.0" : FieldValue.delete()]) { (errr) in print(errr) } 但是errr打印的是nil,没有任何内容被删除。在获取文档时,我注意到在使用此代码时数据有些奇怪: db.collect

我在我的文档中获得了以下数据:

我想删除索引0。我该怎么做?这应该可以达到我想的效果:

    db.collection("data").document("free").updateData(["deleteme.deletemee.0" : FieldValue.delete()]) { (errr) in
        print(errr)
    }
但是errr打印的是nil,没有任何内容被删除。在获取文档时,我注意到在使用此代码时数据有些奇怪:

    db.collection("data").document("free").getDocument { (doc, err) in
        guard let _doc = doc,
            doc?.exists ?? false else{ return }
        print(_doc.data())
    }
这将打印出:

["deleteme": {
    deletemee =     (
        1 //this is the value for the key, but where is my key?! :(
    );
}]

我看不到钥匙,它在哪里?如何在Firestore中删除索引中的内容?谢谢。

目前无法修改存储在Cloud Firestore中的阵列的单个元素

如果将数据存储为地图(键不重要),如下所示:

{
  name: "sam",
  things: {
    one: "value",
    two: "value"
  }
}
// Delete the things.one data
db.collection("whatever").document("whatever").updateData([
    "things.one": FieldValue.delete(),
]) { err in
    if let err = err {
        print("Error updating document: \(err)")
    } else {
        print("Document successfully updated")
    }
}
{
  name: "sam",
  things: {
    two: "value"
  }
}
然后,您可以删除单个元素,如下所示:

{
  name: "sam",
  things: {
    one: "value",
    two: "value"
  }
}
// Delete the things.one data
db.collection("whatever").document("whatever").updateData([
    "things.one": FieldValue.delete(),
]) { err in
    if let err = err {
        print("Error updating document: \(err)")
    } else {
        print("Document successfully updated")
    }
}
{
  name: "sam",
  things: {
    two: "value"
  }
}
现在数据将如下所示:

{
  name: "sam",
  things: {
    one: "value",
    two: "value"
  }
}
// Delete the things.one data
db.collection("whatever").document("whatever").updateData([
    "things.one": FieldValue.delete(),
]) { err in
    if let err = err {
        print("Error updating document: \(err)")
    } else {
        print("Document successfully updated")
    }
}
{
  name: "sam",
  things: {
    two: "value"
  }
}

数组操作终于得到了支持。现在,通过值(而不是索引)支持删除、添加等操作。:

目前,虽然我遇到了一些bug,但还是有一些bug


开发者博客

>:(嗯,好吧,现在数组是非常无用的,因为它们无法更改……是的,现在它们不是非常有用,但这些只是测试版的限制,将来我们将更好地支持数组/数组查询。这必须是现在的答案。@Sampath是的,时间已经改变了,我现在做出了这个答案,这是公认的答案。欢迎使用Stack Overflow。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文将提高其长期价值。