当前位置: 首页 > 面试题库 >

Firestore查询-连接两个集合

谭畅
2023-03-14
问题内容

我是Firestore的新手。我想通过使用ID按联接查询从其他集合中获取名称。我该怎么办?

这是一些样本集合。

我有两个集合。员工和部门。

Department collection:
 1001 --> DeptId : 1001
          DeptName : Account
 1002 -->  DeptId : 1002
           DeptName : HR

Employee collection

2001 --> empId : 2001
         DeptId :1001
         empName : Jon
2002 -->  empId : 2002
         DeptId : 1002
         empName : Steve

我想查询员工集合,并想添加部门文档作为响应的一部分。这是我尝试获取的示例响应。

{
  "empid": 2001,
  "empname" : Jon
  "Dept" :{
    "Id" :1001,
    "DeptName" : HR
  } 
}

这是我获取员工数据的示例代码。

function getEmployee(req, res)
{
 var empId = req.query.empId;
var obj = admin.firestore().collection('employee').doc(empId);
  obj.get()
 .then(function(emp) {
   if (emp.exists) {       
       return res.status(200).send(JSON.stringify(emp.data()));
   } else {              
       return res.status(200).send('not found');
   }
})
.catch(function(error) {
   res.status(500).send('Error getting data.' })
});
}

如何为该员工添加部门对象


问题答案:

Firestore没有联接查询。如果要合并两个文档中的数据,则必须分别查询它们,然后根据两个文档中的数据来组合响应。



 类似资料:
  • 我需要连接来自两个不同表的数据,如下所示。仅使用一个sql查询就可以做到这一点吗?如果“key”和“name”在两个表上,那么它们是相同的。表1中的“状态”始终为“-”,表2中的“T”。此外,两个表上的“名称”和“comp”都匹配(例如:Name3-C和Name4-B)<我尝试过“联合”和“加入”,但还没有解决办法! 表1 表2 结果应该是。。。 提前谢谢!

  • 我有两个表与1:1的关系,我使用内容提供者和CursorLoader。 如何使连接查询与游标加载器一起工作?我可以用内容提供程序中的rawSql来黑它,但如何在游标加载器构造函数中做就不是我能做到的了。 多谢!

  • 我想我读到您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例。例如,我以以下方式设置了Firestore: 舞蹈[收藏] DanceName 歌曲[收藏] 松南 我如何才能查询“查找所有的舞蹈在songName=='x'”

  • 问题内容: 由于ORFirestore中没有逻辑运算符,因此我尝试在本地合并2个单独的查询。 现在,我想知道如何保持结果的正确顺序。当我独立运行2个查询时,我无法明确地查询结果(至少不是我使用该orderBy方法从Firestore获取结果的顺序)。 我的想法是将第二个查询放在第一个查询的内部。这是一个坏主意的表现明智的选择吗? 问题答案: 要在本地合并2个单独的查询,建议您使用方法。您可以使用以

  • 在Firestore中,我有一个用户集合,在每个用户文档中存储一个名为favorites的集合,该集合包含标记为favorites(存储)的文档的ID 我可以采取另一种方法来获取两个集合并手动过滤它们,但我使用的是Firebase RecycerView适配器,它显示的所有数据都基于查询,这将使事情更加高效。 这样的结果是如何实现的呢?如果需要进一步的解释,请告诉我