0

私の問題は、フォームから情報を取得してデータベースにデータを追加することです。 "名前"として情報を追加したいと思います。 「電子メール」は正しく追加できますが、他のデータは追加できません。データベースにデータを追加する際の問題

マイコード:

buttonsignup.addEventListener('click', error => { 
    var nameCompany = document.getElementById('nameCompany').value; 
    var email = document.getElementById('email').value; 
}); 

function add(nameCompany,email) { 
    firebase.database().ref().child('users_company').push({ 
     nameCompany: nameCompany, 
     email: email 
    }); 
} 


function intFirebase() { 

    /*CURRENT USER*/ 
    firebase.auth().onAuthStateChanged(function(user) { 
     if (user != null) { 
      console.log(user); 
      console.log('El UID es '+user.uid); 
      add(nameCompany,user.email); 
     } else { 
      console.log('No user is signed in.'); 
     } 
    }); 
} 

window.onload = function() { 
    intFirebase(); 
} 

さて、コードの中にコーヒーをオンにした後。私はこの解決策を見つけました。しかし...それはよい練習ですか?あなたのintFirebase機能で

const database = firebase.database(); 
 
var user = firebase.auth().currentUser; 
 

 
/* BOTON SIGNUP */ 
 

 
buttonsignup.addEventListener('click', error => { 
 

 
\t var nameCompany = document.getElementById('nameCompany').value; 
 
\t var email = document.getElementById('email').value; 
 
\t var password_1 = document.getElementById('password_1').value; 
 
\t var password_2 = document.getElementById('password_2').value; 
 
\t 
 
\t if (password_1 == password_2) { 
 
\t \t if (password_1.length < 8) { 
 
\t \t \t console.log('Contraseña muy corta'); 
 
\t \t \t document.getElementById("errorPassword").innerHTML = "8 characters"; 
 
\t \t } else { 
 
\t \t \t firebase.auth().createUserWithEmailAndPassword(email, password_1).then (function(result) { 
 
\t \t \t \t add(nameCompany,email); 
 
\t \t \t }).catch(function (error) { 
 
\t \t \t \t var errorCode = error.code; 
 
\t \t \t \t var errorMessage = error.message; 
 
\t \t \t \t }; 
 
\t \t \t }); 
 
\t \t } 
 
\t } else{ 
 
\t \t console.log('errorPassword'); 
 
\t } 
 
}); 
 

 
function add(nameCompany,email) { 
 
\t firebase.database().ref().child('users_company').push({ 
 
\t \t nameCompany: nameCompany, 
 
\t \t emailCompany: email 
 
\t }); 
 
} 
 

 

 
function intFirebase() { 
 

 
\t /*CURRENT USER*/ 
 
\t firebase.auth().onAuthStateChanged(function(user) { 
 
\t \t if (user != null) { 
 
\t \t \t console.log(user); 
 
\t \t \t console.log('El UID es '+user.uid); 
 
\t \t } else { 
 
\t \t \t console.log('No user is signed in.'); 
 
\t \t } 
 
\t }); 
 
} 
 

 
window.onload = function() { 
 
\t intFirebase(); 
 
}

とデータベースのルール

{ 
 
    "rules": { 
 
    "users_company": { 
 
     "$uid": { 
 
     ".read": "auth != null && auth.uid === $uid", 
 
     ".write": true, 
 
      //Change this code to: I can not do scripts in the database. -> ".write": "auth != null && auth.uid === $uid", 
 
     "nameCompany" : { 
 
     \t ".validate": "newData.isString() && newData.val().length < 100" 
 
     }, 
 
     "emailCompany" :{ 
 
     \t ".validate": "newData.isString() && newData.val().length < 100" 
 
     } 
 
     } 
 
    } 
 
    } 
 
}

+0

質問のタイトルには、より具体的(専門的)にする必要があります。 「データベース」ではなく「Firebaseデータベース」です。あなたのタグのリストにfirebaseがある間、それは十分ではありません。がんばろう。 – Reid

答えて

2

すでにログイン現在のユーザーが存在する場合、あなたは、あなたのデータベースを呼び出しています。あなたの電子メールが機能している理由は、あなたが 'user.email'ユーザーが実際にログインしていることを確認した後に表示されます。

新しいユーザーを作成しようとしている場合(上のイベントリスナーが実行しようとしていると思います)あなたがフォームを提出すると発砲する機能。

+0

助けてくれてありがとう。 はい、ユーザーを登録しようとしています。フォームの中に「名前、電子メール、パスワード」があります。 私はあなたの解決策を試してみます。私はコメントが付いてきます。私がそれを解決することができれば、私は解決策に戻ります。 –

関連する問題