2017-10-18 31 views
0

試圖建立一個基本的登錄和使用JavaScript和jQuery與火力電子郵件/密碼認證註冊的形式。用戶註冊和登錄「Reference.push失敗:第二個參數必須是有效的功能」

但是我收到此錯誤「Reference.push失敗:第二個參數必須是一個有效的功能」,在我的控制檯@此行

database.ref().push(emailnew, passwordnew); 

我一直期待在這裏計算器和火力點內docs看看如何糾正這個問題,但我空手而來。我也覺得我的JS文件可能比所需的更多,但我不確定如何簡化它。到目前爲止,沒有任何東西被推送到數據庫。我並不完全熟悉Firebase,因此任何添加的提示都會非常有幫助,謝謝。

理想與成功的新的用戶帳戶創建或登錄,該初始頁面會然後將用戶重定向到實際的應用頁面。

這裏是HTML表單

會員註冊

 <div class="field-wrap"> 
     <label> 
      Name<span class="req">*</span> 
     </label> 
     <input type="name" id="name" required autocomplete="off"/> 
     </div> 

     <div class="field-wrap"> 
     <label> 
      Email Address<span class="req">*</span> 
     </label> 
     <input type="email-signup" id="emailSignup" required autocomplete="off"/> 
     </div> 

     <div class="field-wrap"> 
     <label> 
      Set A Password<span class="req">*</span> 
     </label> 
     <input type="password-signup" id="passwordSignup" required autocomplete="off"/> 
     </div> 

     <button type="" id="signupbutton" />Get Started</button> 



    </div> 
    <!-- User Login Form --> 
    <div id="login"> 
     <h1>Welcome</h1> 


     <div class="field-wrap"> 
     <label> 
      Email Address<span class="req"></span> 
     </label> 
     <input type="emailLogin" id="emailLogin" required autocomplete="off"/> 
     </div> 

     <div class="field-wrap"> 
     <label> 
      Password<span class="req"></span> 
     </label> 
     <input type="passwordLogin" id="passwordLogin" required autocomplete="off"/> 
     </div> 

     <p class="forgot"><a href="#">Forgot Password?</a></p> 

     <button class="button button-block" id="login" />Log In</button> 

     <div id=loginmessage> 
     </div> 

這裏是我的user.js的與火力一體化文件,如下所示:

 // Initialize Firebase 
     var config = { 
     apiKey: 'AIzaSyBU1fYqhQrVskqgA0Okr3ZStPfYz0s3QWQ', 
     authDomain: "https://lackluster-5966e.firebaseapp.com", 
     databaseURL: 'https://lackluster-5966e.firebaseio.com', 
     projectId: "lackluster-5966e", 
     storageBucket: 'https://lackluster-5966e.appspot.com', 
     messagingSenderId: "489067404953" 
     }; 
     firebase.initializeApp(config); 


     // var firebaseref = new Firebase("https://lackluster-5966e.firebaseapp.com"); 
     var database = firebase.database(); 
     var auth = firebase.auth(); 
     var user = firebase.auth().currentUser; 
     console.log(config); 

    var emailnew; 
    var passwordnew; 

    //Collect User Data from Signup 
    $("#signupbutton").click(function(event){ 
      event.preventDefault(); 
    emailnew = $("#emailSignup").val(); 
    passwordnew = $("#passwordSignup").val(); 
    database.ref().push(emailnew, passwordnew); //Error occurs 
    console.log(emailnew); 
    console.log(passwordnew); 
     }); 

//Creates New User via Firebase Authentication 
var promise = auth.createUserWithEmailAndPassword(emailnew, passwordnew); 
promise.then(function(user) { 
user.sendEmailVerification().then(function() { 
// Email sent. 
}, function(error) { 
// An error happened. 
}); 

//Sends User Info to firebase DB 
user.updateProfile({ 
    Name: name, 
    Email: emailnew 
    }).then(function() { 
    // Update successful. 
    }, function(error) { 
    // An error happened. 
}); 


// Clears all of the text-boxes for user signup 
    $("#emailSignup").val(""); 
    $("#passwordSignup").val(""); 


//User Login Event 
var emailLogin = document.getElementById('emailLogin'); 
var passwordLogin = document.getElementById('passwordLogin'); 

$("#login").click(function(event){ 
     event.preventDefault(); 


var email = emailLogin.value; 
var password = passwordLogin.value; 
var auth = firebase.auth(); 

var promise = auth.signInWithEmailAndPassword(email, password); 
promise.catch(function (e) { 
return console.log(e.message); 
    }); 

// //Page redirect 
// firebase.auth().onAuthStateChanged(user => { 
// if(user) { 
//  window.location = 'index.html'; 
// } 
// else{ 
//  //Do nothing. 
// } 
// }); 

// Authentication Listner 
// Verifies that login credentials are correct otherwise returns error message 
var Message = "<div class=\"loginmessage\">" + "Login Unsuccessful" + "</div>"; 
firebase.auth().onAuthStateChanged(function (firebaseUser) { 
if (firebaseUser) { 
console.log(firebaseUser); 
} else { 
    $('#loginmessage').append(Message); 
console.log('not logged in'); 
} // end else statement 
}); // end function 
}); 

// Clears all of the text-boxes for user login 
    $("#emailLogin").val(""); 
    $("#passwordLogin").val("") 
}); 

回答

1

push方法需要一個對象作爲參數。

修改您的通話這樣:

// the property names are up to you 
database.ref().push({ email: emailnew, password: passwordnew }); 
+0

謝謝!這解決了我的電話問題,並且控制檯日誌顯示輸入的值,但輸入的數據未填充到Firebase中。我認爲我的電話有問題,但無法弄清楚問題所在。 – chlc

相關問題