开发者问题收集

Vue,firebase数据库返回空数组

2018-06-10
742

我正在尝试从 firebase 数据库检索数据。

我可以连接到 firebase auth 并检查 currentUser 数据,这很好。
但我无法从 firebase 数据库检索数据,它只返回空数组。

firebase 版本 = 5.0.4
vue 版本 = 2.5.16

数据库结构

users/     
--------uId/        
--------------name    
--------------email 

Vue Js 文件夹结构

App.vue    
firebase.js    
main.js     
components /     
------------ Home.vue  

firebase.js

var firebase = require('firebase');
require("firebase/auth");     
require("firebase/database");

var config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    projectId: "...",
    storageBucket: "...",
    messagingSenderId: "..."
};
firebase.initializeApp(config)
export const auth = firebase.auth();
export const db = firebase.database()

Home.vue

<script>
import {db} from './../firebase';
import {auth} from './../firebase';
var usersRef = db.ref('users');

export default {
    name: "Home",
    components: {
        add_new
    },
    data(){
        return {}
    },
    mounted: function(){
        console.log(usersRef);
        var userId = auth.currentUser.uid;
        return db.ref('/users/' + userId).once('value').then(function(snapshot) {
            snapshot.forEach(function (childData) {
                console.log(childData.val())
            })
        })
    }
}
</script>

在这里,Vue 应用程序正常运行,
只有 firebase.database ( usersRef ) 返回空数组。

这是 console.log(usersRef) 结果的截图
https://i.sstatic.net/NH7gh.png

1个回答

首先,为什么不使用多个 import 语句呢

import {auth, db} from './../firebase';

并尝试将

snapshot.forEach(function (childData) {
   console.log(childData.val())
})

更改为 snapshot.val()

var userId = auth.currentUser.uid;
return db.ref('/users/' + userId).once('value').then(function(snapshot) {
   console.log(snapshot.val());
});
wobsoriano
2018-06-10