Javascript Firebase将数据存储到错误的用户ID
我正试图将数据存储到Firebase中的myJavascript Firebase将数据存储到错误的用户ID,javascript,firebase,firebase-realtime-database,firebase-authentication,nosql,Javascript,Firebase,Firebase Realtime Database,Firebase Authentication,Nosql,我正试图将数据存储到Firebase中的myusersRef,但它是由错误的键(userId)存储的 注册新用户后,我会给他们一定数量的积分 在其他地方,用户可以部署优惠,这些优惠应存储为与信用卡相同的用户ID。但是,创建了一个新的userID,剩下一个userID具有credits属性,另一个具有offer属性 deployOffer: function(){ try { var user = firebase.auth().currentUser;
usersRef
,但它是由错误的键(userId)存储的
注册新用户后,我会给他们一定数量的积分
在其他地方,用户可以部署优惠,这些优惠应存储为与信用卡相同的用户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
怎么可能返回不同的密钥?以下是我的db在注册并发布报价后的样子:
您的代码中有一个竞争条件。创建用户需要时间,异步操作也需要时间。但是您要立即为用户写入初始信用,这意味着您实际上是在将它们写入以前登录的用户(在过程中覆盖他们现有的信用和优惠) 解决方案是在
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;
// ...
});
},
您的代码中有一个竞争条件。创建用户需要时间,异步操作也需要时间。但是您要立即为用户写入初始信用,这意味着您实际上是在将它们写入以前登录的用户(在过程中覆盖他们现有的信用和优惠) 解决方案是在
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;
// ...
});
},