因此,我正在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”中进行更改,因为现在该变量未定义。关于如何解决这个问题的任何指导?
一种选择是userhandle
在文档中添加一个字段,以便您可以使用集合组查询。像这样:
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);
})
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句