如何在Firebase中映射文档数据并提取指定字段转为数组?
解决Firebase数据结构转换与上传问题
一、从现有数据中提取mon数组
你的现有数据里,mon是Firebase的map结构(类对象),要转成纯数组的话,用Object.values()就能直接提取出对应的值数组,刚好匹配你要的格式。
修正你的代码:
// 若查询返回单条文档(对应你给出的原始数据结构) const docData = data.docs[0].data(); const monArray = Object.values(docData.mon); setUser(monArray);
如果查询返回多条文档,需要批量处理:
const monArrays = data.docs.map(doc => Object.values(doc.data().mon)); // 若要合并所有文档的mon数组为一个数组,使用flat() setUser(monArrays.flat());
二、上传时直接生成目标数组结构
上传数据到Firebase时,直接传入数组类型的modulyPV即可,无需转成带数字键的对象。Firebase会自动将数组存储为有序结构,后续读取时doc.data().mon直接就是你要的数组格式。
示例上传代码:
// 确保modulyPV是数组格式 const modulyPV = [{"name": "", "desc": ""}, {"name": "", "desc": ""}]; // 上传到Firebase集合 firebase.firestore().collection('users').add({ displayName: user.displayName, uid: user?.uid, mon: modulyPV // 直接传入数组 });
内容的提问来源于stack exchange,提问作者kamil danilski
相关产品推荐
相关产品推荐

