Как получить коллекцию, которая находится в документе другой коллекции в firebase - PullRequest
1 голос
/ 21 октября 2019

Итак, я создаю API в FireBase и в базе данных есть коллекция университетов. Внутри этой коллекции есть несколько документов университетов. В каждом документе я создал коллекцию пользователей. Так что внутри каждого университета вы можете видеть пользователей, которые посещают этот университет. То, что я хочу сделать, это каждый раз, когда я делаю запрос к серверу с помощью GET API / пользователя, он показывает (через токен авторизации) мои данные как пользователь.

Я создал функцию, которая запрашивает данныепользователь, используя Bearer {токен}, но кажется, что когда я консольный журнал, идентификатор университета не определен. Внутри пользовательского документа есть поле с именем uniId (идентификатор университета, к которому принадлежит пользователь, и это тот же идентификатор документа университета). Я использую почтальон для выполнения запросов API после того, как я создал токен Bearer с другой функцией входа в систему.

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, потому что теперь эта переменнаяне определеноЛюбое руководство о том, как я могу подойти к этому?

1 Ответ

0 голосов
/ 22 октября 2019

Одним из вариантов является добавление поля 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);
                            })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...