javascript - 尝试删除 firestore 中的字段数组,但我的方法不起作用
问题描述
所以我试图删除字段 Notes[1],selectedNote 有一个我需要删除的选定数组的值。
window.addEventListener("load", function load(event) {
document.getElementById("deleteNotes").onclick = function() {
console.log("you did click atleast");
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
let user = firebase.auth().currentUser;
let userInfo = db.collection("Users").doc(user.uid);
userInfo.get().then(function(doc) {
if (doc.exists) {
let selectedNote = document.getElementById("noteSelect")
.selectedIndex;
console.log(selectedNote);
var cityRef = db.collection("Users").doc(user.uid);
cityRef.update({
Notes: FieldValue.delete().arrayRemove(selectedNote)
});
}
});
}
});
};
});
所以我想用这个
cityRef.update({
Notes: FieldValue.delete().arrayRemove(selectedNote)
});
删除 selectedNote ,它是数组 1 例如在 Notes 中。我不希望删除整个 Notes 字段,而只是删除 Notes 字段中的选定数组。出于某种原因,我正在努力让它工作。任何帮助将不胜感激<3
解决方案
Firebase 数组不为其数组使用索引,而是需要数组条目的值。这确实意味着您无法摆脱重复的数据。
您必须首先获取数组“Notes”并从其索引中返回其值虽然,我听说数组可能会乱序返回,因为它们不依赖于索引。
改变这一行;
Notes: FieldValue.delete().arrayRemove(selectedNote)
对此;
Notes: FieldValue.delete().arrayRemove(doc.data().Notes[selectedNote])
我建议您从本地存储的变量中提取数组的值,以确保值与编辑前和编辑后匹配。
推荐阅读
- python - 将 Pandas 数据框转换为 geotiff 图像
- xamarin - 自动缩放标签 Xamarin
- python - 通过正则表达式拆分多行
- c++ - 将 DWORD 写入 REG_DWORD 后注册表中的 DWORD 值无效?
- swift - Swift5 CoreStore CoreStore.fetchAll() 抛出错误
- angular - 如何通过组件传递 CDK 列和行定义
- java - SoftKeyboard Listener 检查键盘何时打开/关闭且 ProgressBar 正确运行
- javascript - 不等的 div 高度
- javascript - 如何从具有相同元素 ID 的 SVG 序列创建动画
- java - Jackson 如何决定从数值创建什么类型的 NumericNode