删除Firestore中数组的索引

时间:2017-10-13 22:03:10

标签: firebase google-cloud-firestore

我在我的文档中得到了这些数据:

enter image description here

我想删除索引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中删除索引处的内容?感谢。

3 个答案:

答案 0 :(得分:10)

最终支持数组操作。现在,通过值(而不是索引)支持删除,添加等操作:See this

目前,虽然我遇到了this个错误,但目前仍有一些错误。

开发博客here:

答案 1 :(得分:2)

目前无法修改存储在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"
  }
}

答案 2 :(得分:0)

export const deleteArrayIndex = (collectionName, id, index) => {
    db.collection(collectionName).doc(id).update(
        { [index]: firebase.firestore.FieldValue.delete() }
    ).then(function () {
        console.log(index + "  is deleted");
    }).catch(function (error) {
        console.error("Error removing document: ", error);
    });
}