Firebase查询优化:如何获取仅含用户信息的纯净数据
解决Firebase查询返回冗余数据,仅获取用户信息对象
你当前代码返回的是QuerySnapshot对象,包含了查询元数据、文档快照等冗余内容,要拿到纯用户信息对象,需要从快照中提取实际数据,修改后的代码如下:
export const GetUserDB = async (userId) => { const querySnapshot = await db .collection('users') .where("id", "==", userId) .get(); // 由于用户ID唯一,取第一个匹配的文档 if (!querySnapshot.empty) { const userDoc = querySnapshot.docs[0]; // 合并文档ID与存储的用户数据,不需要ID可直接返回userDoc.data() return { id: userDoc.id, ...userDoc.data() }; } // 未找到用户时返回null return null; }
关键修改点
- 直接在查询链上调用
.get()并await,拿到查询结果快照 - 通过
querySnapshot.docs获取匹配的文档快照数组,取第一个元素(因为用户ID唯一) - 用
userDoc.data()提取文档中的实际用户数据,可选合并文档ID(如果业务需要) - 增加空结果判断,避免后续操作报错
内容的提问来源于stack exchange,提问作者YCrhis
相关产品推荐
相关产品推荐

