【问题标题】:Firebase Vue Vuefire UID not availabe in timeFirebase Vue Vuefire UID 未及时可用
【发布时间】:2017-11-15 23:01:09
【问题描述】:

我正在尝试让 vuefire/vue/firebase 在存在身份验证和单独用户时工作。当我手动传递 UID 时,我可以让它工作......

let booksRef = db.ref('Users/' + 'SOhUKhcWzVRZmqe3AfcWMRwQR4r2' + '/Books');

但是,当我尝试将硬编码的 uid 替换为来自 Firebase 的 uid 时,我得到一个空结果......它在调用时基本上还没有准备好,即使用户已登录...... .:

beforeCreate: function() {
  var context = this;
  Firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    currentUser = user;
    context.currentUserId = user.uid;
    context.currentUserEmail = user.email;
    context.signedIn = true;
    } 
    else {
    context.currentUserId = null;
    context.currentUserEmail = null;        }
});

如何确保在创建数据集路径之前先获取 UID?

谢谢!

【问题讨论】:

    标签: firebase vue.js firebase-authentication vuefire


    【解决方案1】:

    在 GitHub 示例的帮助下,我发现了这一点。

    我在下面提供 GitHub 链接。但是,简而言之,在使用 auth 和 UID 时,您必须做一些不同的事情...... Vuefire 没有很好地记录它。您需要使用 VueJS 生命周期方法 beforeCreate,以及特殊的 Vuefire 绑定 $bindAsArray

    这是一个显示用法的sn-p:

    new Vue({
      el: '#app',
      beforeCreate: function() {
    
        // Setup Firebase onAuthStateChanged handler
        //
        // https://firebase.google.com/docs/reference/js/firebase.auth.Auth
        // https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onAuthStateChanged
        firebase.auth().onAuthStateChanged(function(user) {
          if (user) {
            this.user = user
            // https://github.com/vuejs/vuefire/blob/master/src/vuefire.js#L169
            this.$bindAsArray('messages', db.ref('messages/' + user.uid))
          } else {
            // https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInAnonymously
            firebase.auth().signInAnonymously().catch(console.error)
          }
        }.bind(this))
    
      },
    
      // Initialize reactive props, bind later when user is available
      data: {
        user: {},
        messages: []
      },
    

    See the full github example here:

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2017-07-03
      • 2018-10-25
      • 2020-09-25
      • 2017-09-11
      • 2018-01-13
      • 2017-07-31
      • 1970-01-01
      • 2017-10-17
      相关资源
      最近更新 更多