Firebase, веб-приложение: получение документов пользователем - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь использовать Firebase в своем веб-проекте, и мне интересно, как получить данные из Firestore в настоящее время зарегистрированным пользователем.

Я пытался что-то вроде этого:

import firebase from 'firebase';

const uid = firebase.auth().currentUser.uid;
firebase.firestore().collection('posts').add({
        title: this.title,
        content: this.content,
        user: uid
})
firebase.firestore().collection('posts').where("user", "==", uid).get()
    .then(snapshots => {
      this.posts = snapshots.docs.map(doc => {
        const data = doc.data();
        return {
          id: doc.id,
          title: data.title,
          content: data.content
        }
      })
    })
    .catch(function(error) {
        console.log("Error getting documents: ", error.message);
    });

Что работает хорошо, но выглядит не очень «профессионально», поэтому мне просто интересно, есть ли какой-нибудь правильный способ сделать это.

Ответы [ 2 ]

2 голосов
/ 22 марта 2020

используйте isEqualTo, как показано ниже:

где ("пользователь", isEqualTo: uid) .get ()

1 голос
/ 22 марта 2020

IMO, ваш код выглядит хорошо и читабельно - не пытайтесь быть «профессиональным», если это эквивалентно фантазии. Ниже приведено мнение одного человека об использовании переменных немного больше :)

const db = firebase         
    .initializeApp({ 
        // config ...
    }) 
    .firestore();

const auth = firebase.auth();
const user = auth.currentUser.uid;

const postRef = db.collection('posts');

//  add 
const { title, content } = this;
postRef
    .add({
        title,
        content,
        user
    })

//  get 
postRef
    .where('user', '==', user)
    .get()
    .then(snapshot => {
        this.posts = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }))  
    })
    .catch(console.error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...