Firestore嵌套数组更新问题:如何移除指定学生的科目?
解决Firestore嵌套数组元素更新问题
核心修正:用点语法替代方括号访问数组索引
你之前的错误有两个关键点:一是用了方括号[nameIndex]作为路径的一部分,Firestore不允许这类字符出现在字段路径中;二是路径里误写了本地变量名peoplesNames,但文档里的实际字段是names。
正确的更新代码如下:
_store.collection('nums').doc('class').update({ 'names.$nameIndex.subjects': FieldValue.arrayRemove([subject]) });
原理说明
Firestore规定,访问数组的特定元素需要使用字段名.索引数字的格式,而非方括号。比如要修改names数组中第2个学生的科目,路径就是names.1.subjects(数组索引从0开始)。这种写法既符合路径规范,又能精准定位到目标学生的科目数组,通过arrayRemove就能直接移除指定科目。
内容的提问来源于stack exchange,提问作者Ezra0M
相关产品推荐
相关产品推荐

