【问题标题】:Firebase storing data to wrong user IDFirebase 将数据存储到错误的用户 ID
【发布时间】:2017-08-05 18:34:06
【问题描述】:

我正在尝试将数据存储到我在 Firebase 中的 usersRef,但它是由错误的密钥 (userId) 存储的。

注册新用户后,我给他们一定数量的积分。

addUser: function () {
        firebase.auth().createUserWithEmailAndPassword(this.newuser.email, this.newuser.password).catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            // ...
        });
        console.log("adding user");
        try {
            var user = firebase.auth().currentUser;    
            var userRef = database.ref('users/' + user.uid + '/');
            userRef.set({'credits': this.newuser.credits});
            if (user){
                this.logInShow = false;
            }
        }
        catch(err){

        }
    },        

用户可以在其他地方部署优惠,这些优惠应存储在与积分相同的用户 ID 中。但是,创建了一个新的 userID,我剩下一个 userId 具有 credits 属性和一个具有 offer。

deployOffer: function(){
    try {
        var user = firebase.auth().currentUser;    
        var userOffersRef = database.ref('users/' + user.uid + '/offers');
        offersRef.push(this.newoffer);
        userOffersRef.push(this.newoffer);
        this.offerShow = false;
        this.post = false;
    } catch (err){
        console.log(err);
    }
},

我只注册了一个,firebase.auth().currentUser.uid 怎么会返回不同的密钥?这是我的数据库在注册并发布报价后的样子:

【问题讨论】:

    标签: javascript firebase firebase-realtime-database firebase-authentication nosql


    【解决方案1】:

    您的代码中有竞争条件。创建用户需要时间,异步操作也是如此。但是您会立即为用户写入初始积分,这意味着您实际上是在将它们写入之前登录的用户(在此过程中覆盖他们现有的积分和优惠)。

    解决方法是在createUserWithEmailAndPassword的完成监听器中写入初始学分:

    addUser: function () {
        firebase.auth().createUserWithEmailAndPassword(
          this.newuser.email, 
          this.newuser.password
        ).then(function(user) {
            console.log("adding user");
            var userRef = database.ref('users/' + user.uid + '/');
            userRef.set({'credits': this.newuser.credits});
            if (user){
                this.logInShow = false;
            }
        }).catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            // ...
        });
    },      
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 2016-10-20
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多