javascript - 如何删除 Firebase 对象映射中的深层嵌套字段
问题描述
我有一个名为“CourseList”的 Firebase 对象映射,其中包含嵌套字段。这些嵌套字段本身就是包含更多嵌套字段的对象映射。此外,其中一些对象映射将具有随机生成的名称。
目标是删除随机生成的名称为“352oIP3fdc6IIvuBbajR0”(蓝色下划线)的对象映射。“CourseList”和“LectureList”的名称是静态名称,但是红色的 CourseID(具有随机生成的名称“2dfPipFRKiB6TAKab4jv8”)。
通过关注 stackOverflow 上的其他问题,如果我想删除红色对象映射“2dfPipFRKiB6TAKab4jv8”,我能够使删除功能正常工作。
let CID = '2dfPipFRKiB6TAKab4jv8';
await db.collection('users').doc(UID).set( {
CourseList : { [CID]: FieldValue.delete() }
},{ merge: true }
);
但是,当我尝试删除“352oIP3fdc6IIvuBbajR0”的蓝色下划线的子对象映射时,该操作似乎没有做任何事情,并且 Firebase 文档没有改变。
let CID = "2dfPipFRKiB6TAKab4jv8";
let LID = "352oIP3fdc6IIvuBbajR0";
await db.collection('users').doc(UID).set( {
CourseList : { [`${CID}.LectureList.${LID}`]: FieldValue.delete() }
},{ merge: true }
);
任何关于如何正确删除对象映射内深层嵌套字段的清晰说明将不胜感激。
解决方案
解决方案:
对于未来的读者,这是我用来删除对象映射中高度嵌套的字段的代码。
const userRec = db.collection('users').doc(UID);
let userRecData = await userRec.get();
let userRecResp = {};
userRecResp = userRecData.data();
delete userRecResp.CourseList[CID]['LectureList'][LID];
await db.collection('users').doc(UID).update(userRecResp);
请注意,“UID”、“CID”和“LID”是变量名。
推荐阅读
- javascript - useEffect 不断重新渲染我的组件,尽管对象没有改变
- python - Django REST ViewSet 创建
- javascript - 使用fabric.js 免费绘图,有没有办法只在某些fabric.Objects 上进行绘制?
- python - 如何从我的 Keras 神经网络一次做出一个预测
- vb.net - 对于...下一个循环计时问题
- c# - 每次我构建我的 C# 项目时,Access 数据库都会被重置
- sparql - 是否可以在 SPARQL/Update 中使用 GROUP BY 子句执行 INSERT 操作?
- ios - SwiftUI,如何使背景颜色动画多次
- android - 通过 JNI 传递数据数组的最快方法是什么?
- salesforce - 当您切换到帐户收货地址中的下一个文本框时,最后一个字母被删除