Firebase 无法从Vuejs方法和firestore返回值

Firebase 无法从Vuejs方法和firestore返回值,firebase,vue.js,google-cloud-firestore,vuex,Firebase,Vue.js,Google Cloud Firestore,Vuex,我想从firestore OnSnapshot函数返回值,以便检索用户图像的url。我正在使用vuejs和firestore。我在vue的created属性中有activeUserImg函数 activeUserImg: function () { const u = firebase.auth().currentUser; firebase.firestore().collection('Colleges').doc(u.uid).onSnapshot(function(

我想从firestore OnSnapshot函数返回值,以便检索用户图像的url。我正在使用vuejs和firestore。我在vue的created属性中有
activeUserImg
函数

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;

        }
每次它都会显示未定义的值作为返回

图像代码:

<img
v-if="activeUserImg.startsWith('http')"
key="onlineImg"
:src="activeUserImg"
alt="user-img"
width="40" height="40"/>
<img
v-else
key="localImg"
:src="require(`@/assets/images/portrait/small/${activeUserImg}`)"
alt="user-img"
width="40" height="40"/>



返回语句应位于firestore回调内部,如下所示

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;
});


    }

您可以将函数包装为一个,然后等待结果何时可用

例如:

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);
            });
    });
}
然后,您可以通过

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


能否提供firestore数据库的屏幕截图。FireStore的屏幕截图我试过这个。它不起作用。它仍然没有返回存储在firestore文档字段中的url地址。我使用了相同的功能,但仍然没有显示图像。我在主代码中添加了图像代码。您是否从firebase获得图像结果?您是否对从firebase获得的
doc
数据进行了控制台操作,并且数据就在那里?是否要在某人可以查看的地方进行复制?console.log(结果)显示console中的url,但在标记中调用函数时不会显示imageOkay。现在这是一个与问题完全不同的问题。尝试使用::src=“/assets/images/trait/small/${activeUserImg()}”作为“v-else”,如果您确定该图像在资产文件夹中可用。实际上,我正在尝试从firebase firestore检索图像,该图像以url(存储在徽标中)的形式存储。我的代码的格式是函数activeUserImg()返回firebase图像url(在v-if的if部分)或本地图像(在v-else部分)。目前,activeuseUserImg无法从我的数据库返回字段“logo”的值
const result = await activeUserImg()

console.log(result)