问题描述
SS of error I am recieving.我已经创建了一个弹跳球游戏,并将其与我创建的火力基地相连。我正在尝试从firebase读取和写入highscore和用户详细信息。每次我调用写函数时,都会发生此错误。
"Reference.set failed: First argument contains undefined in property "
[错误显示在图像中。]
奇怪的是,每次我第一次使用新的Google帐户登录并写入Firebase时,它都会成功写入,但是下次我在保持登录状态下写入时,它不会写入,并且会发生错误。我正在尝试写两个单独的路径,“ userDetails”路径中的所有用户详细信息,以及“ userScores”路径中的高分。我正在使用用户“ Google ID”进行书写和阅读,这是用户使用Google帐户登录后获得的。我已附上“写入功能”,“读取功能”和“登录功能”的图片
function fb_writeRec() {
console.log(db_write);
userScores.highScore = hitsCntr;
db_write("userDetails",userDetails.uid,userDetails);
console.table(userDetails);
db_write("userScores",userScores);
console.table(userScores);
}
function db_write(_path,_key,_data) {
console.log('db_WriteRec: ' + _path + '/' + _key + ' ' + _data);
ref = database.ref(_path + '/' + _key).set(_data,function(error) {
if (error != null) {
console.log('error');
}
});
}
function fb_login(userDetails) {
console.log('fb_login: dataRec= ' + userDetails);
firebase.auth().onAuthStateChanged(newLogin);
function newLogin(user) {
if (user) {
// user is signed in
userDetails.uid = user.uid;
userDetails.email = user.email;
userDetails.name = user.displayName;
userDetails.photoURL = user.photoURL;
loginStatus = 'logged in';
db_read(BB,userScores);
console.log(userScores)
}
else {
// user NOT logged in,so redirect to Google login
userDetails.uid = '';
userDetails.email = '';
userDetails.name = '';
userDetails.photoURL = '';
loginStatus = 'logged out';
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithRedirect(provider);
}
}
}
function db_read(_path,_data) {
console.table(_data);
console.log('db_ReadRec: ' + _path + '/' + _key);
readStatus = 'waiting...'
var ref = database.ref(_path + '/' + _key);
ref.once('value',gotData,errData);
function gotData(snapshot) {
console.table(_data);
if (snapshot.val()!=null){
var dbData = snapshot.val();
if(_path == 'userDetails') {
fb_processDetails('OK',snapshot.key,dbData,_data);
}
else {
fb_processScores('ok',_data)
//display to screen
}
}
else {
if(_path == 'userDetails') {
fb_processDetails('no');
}
else{
fb_processScores('no');
}
}
userDetails.uid = snapshot.key;
userDetails.name = dbData.name;
userDetails.email = dbData.email;
userDetails.photoURL = dbData.photoURL
userScores.score = dbData.score;
readStatus = 'OK';
console.log(userDetails.email + '/' + userDetails.name + '/' + userScores.score);
}
function errData(err) {
console.log(err);
readStatus = 'error';
}
} //end of db_read()
function fb_processScores (_result,_data) {
if(_result == 'no'){
//?
}
else {
//console.table(dbData)
_data.highScore=dbData.highScore
console.table(_data)
//alert(_data.highScore);
}
function fb_processDetails (_result,_dbData,_data) {
if(_result == 'no') {
//?
}
else {
_data.uid = _key
_data.name =_dbData.name
_data.email =_dbData.email
_data.photoURL =_dbData.photoURL
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)