因此,我正在firebase中创建一个API,并且在数据库中有一些大学。在此收藏中,有许多大学文件。在每个文档中,我创建了一个用户集合。因此,在每所大学中,您都可以看到参加该大学的用户。 我想做的是每次我通过api / user的GET向服务器发出请求时,它都会(通过授权令牌)显示我作为用户的详细信息。
我已经创建了通过使用Bearer {token}请求用户数据的功能,但似乎在我登录控制台时,大学ID是未定义的。在用户文档中,有一个名为uniId的字段(用户所属大学的ID,与大学文档的ID相同)。在使用另一个登录功能创建Bearer令牌后,我正在使用邮递员发出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”中进行某些更改,因为现在该变量未定义。 关于如何解决这个问题的任何指导?
答案 0 :(得分:0)
一种选择是在文档中添加一个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);
})
}