所以我在 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/