繁体   English   中英

如何在 firestore 9 中查询单个字段

[英]How to query for a single field in firestore 9

我正在尝试查询文档中的数据。 我发现了如何使用流动逻辑进行查询

const docRefCol = doc(db, 'UsersCollection', uid);

interface objectData {
   field1Obj: { [key: string]: any };
   field2Arr: [];
 }

 let obj: objectData = { field1Obj: {}, field2Arr: [] };
  await getDoc(docRefCol).then((docSnap) => {
   Object.assign(obj, docSnap.data());  
 });
  
  console.log(obj)

这个问题是我想要一种不可变的方式来提取数据。 加上另一种查询单个字段的方法(假设field1Obj ),而不是调用整个文档。

没有任何方法可以获取一些字段(至少在客户端 SDK 中没有)。 但是您可以销毁 object 并获取所需的字段(或者在查询多个对象时进行过滤)。

let obj: objectData = { field1Obj: {}, field2Arr: [] };

await getDoc(docRefCol).then((docSnap) => {
  const { field1Object, field2Arr, ...rest } = docSnap.data()
  obj = { field1Object, field2Arr }
});

在 QuerySnapshot 的情况下,它可能是这样的:

await getDocs(query).then((querySnap) => {
  const docs = querySnap.docs.map((doc) => {
    const { field1Object, field2Arr, ...rest } = doc.data()
    return { field1Object, field2Arr }
  })
});

它肯定不会减少从数据库中获取的数据量,但选择字段目前仅受管理/服务器端 SDK 支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM