【发布时间】:2020-11-02 22:33:54
【问题描述】:
我有一个名为“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 }
);
任何关于如何正确删除对象映射内深层嵌套字段的说明将不胜感激。
【问题讨论】:
-
除了您所期望的之外,这段代码究竟做了什么? “似乎不起作用”是没有足够的信息来处理。还请对值进行硬编码,而不是使用我们看不到值的变量。这里应该有足够的信息,任何人都可以运行代码并看到相同的结果。
-
当然可以。我将编辑问题以提高读者的清晰度。
标签: javascript firebase google-cloud-firestore