Unable to return value from Vuejs method and firestore

前端 未结 2 334
挽巷
挽巷 2021-01-17 05:38

i want to return the value from the firestore OnSnapshot function so that i can retrieve the url of user image. I am using vuejs and firestore. And i have activeUserIm

相关标签:
2条回答
  • 2021-01-17 06:05

    return statement should be inside of the firestore callback just like below

    activeUserImg: function () {
               const u = firebase.auth().currentUser;
    firebase.firestore().collection('Colleges').doc(u.uid).onSnapshot(function(doc) {
    
         var img_arr=[];
        this.img_arr.push(doc.data())
        this.img= doc.data().logo
        return this.img || this.$store.state.AppActiveUser.img;
    });
    
    
        }
    
    0 讨论(0)
  • 2021-01-17 06:10

    You can wrap the function in a promise and wait for when the result is available.

    Example:

    activeUserImg: () => {
        return new Promise(function(resolve, reject) {
              const u = firebase.auth().currentUser;
    
              firebase
                .firestore()
                .collection('Colleges')
                .doc(u.uid)
                .onSnapshot(function(doc) {
                    var img_arr=[];
                    this.img_arr.push(doc.data())
                    this.img= doc.data().logo
    
                    // return the result
                    resolve(this.img || this.$store.state.AppActiveUser.img);
                });
        });
    }
    

    Then, you can access the value by

    activeUserImg.then(result => {
       console.log(result);
    })
    

    Or

    const result = await activeUserImg()
    
    console.log(result)
    
    0 讨论(0)
提交回复
热议问题