我在我的文档中得到了这些数据:
我想删除索引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中删除索引处的内容?感谢。
答案 0 :(得分:10)
答案 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);
});
}