node.js - 如何获取 Firebase 中另一个集合的文档中的集合

标签 node.js firebase api google-cloud-firestore

所以我在 firebase 中创建一个 API,数据库中有一组大学。该收藏中有多份大学文件。在每个文档中,我创建了一个用户集合。因此,在每所大学内,您都可以看到就读该大学的用户。 我想要做的是每次我通过 api/user 的 GET 向服务器发出请求时,它都会显示(通过授权 token )我作为用户的详细信息。

我已经创建了通过使用 Bearer {token} 请求用户数据的函数,但是当我控制台登录时,大学 ID 似乎未定义。在用户文档中有一个名为uniId的字段(用户所属大学的ID,与大学文档的ID相同)。在使用另一个登录函数创建承载 token 后,我使用 postman 发出 API 请求。

exports.getAuthenticatedUser = (req, res) => {
  let userData = {};
  db.doc(`/unis/${req.user.uniId}/users/${req.user.handle}`).get()
    .then((doc) => {
      if(doc.exists){
        userData.credentials = doc.data();
        return res.json(userData);
      }
    })

我知道我需要更改“req.user.uniId”中的某些内容,因为现在该变量未定义。 关于如何解决这个问题有任何指导吗?

最佳答案

一种选择是在文档中添加 userhandle 字段,以便您可以使用 collection group query 。像这样的事情:

exports.getAuthenticatedUser = (req, res) => {
  let userData = {};
  db.collectionGroup('users').where('userhandle', '==', req.user.handle)
                             .limit(1)
                             .get()
                             .then(function (querySnapshot) {
                               querySnapshot.forEach(function (doc) {
                                 userData.credentials = doc.data();
                                 return res.json(userData);
                               });
                            }).catch(function(error) {
                               console.log("Error getting documents: ", error);
                            })
}

关于node.js - 如何获取 Firebase 中另一个集合的文档中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58492903/

相关文章:

mysql - 蒙戈数据库 : Query based on time in ISODate format

javascript - Sequelize - 按降序获取值

Firebase FCM 实践(1 个项目与多个应用)

android - Firebase 云消息传递通知 key 名称

C# 将 PDF 文件上传到 Firebase 项目存储?

api - import.io URL 返回

node.js - Firebase Admin SDK - 使用自定义字段创建用户

node.js - nodejs/环回 : defining relationships doesn't seem to be reflected on database?

javascript - angular.element().scope 函数在 fb 脚本中不起作用

api - Instagram API 获取新关注者通知