javascript - 注册帐户后如何将用户 uid 存储到 firebase 数据库?

标签 javascript firebase web firebase-realtime-database firebase-authentication

这是我的 .js 代码

$("#loginBtn").click(
function(){


var email = $("#loginEmail").val();
var password = $("#loginPassword").val();

if(email != "" && password != ""){
  $("#loginProgress").show();
  $("#loginBtn").hide();
  $("#registerBtn").hide();

  firebase.auth().signInWithEmailAndPassword(email, 
password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;

    $("#loginError").show().text(errorMessage);
    $("#loginProgress").hide();
    $("#loginBtn").show();
    $("#register_account_Btn").hide();
    $("#back_btn").hide();

  });
 }
}
);

/* REGISTER PROCESS */

$("#register_account_Btn").click(
 function () {
var email = $("#regEmail").val();
var password = $("#regPassword").val();

if(email != "" && password != ""){
  $("#loginProgress").show();
  $("#loginBtn").hide();

  firebase.auth().createUserWithEmailAndPassword(email,
   password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;

    $("#loginError").show().text(errorMessage);
    $("#loginProgress").hide();
    $("#loginBtn").show();
    $("#register_account_Btn").hide();
    $("#back_btn").hide();

  });
}

我在互联网上找到了这个,但我不知道在哪里插入它。 这是正确的吗?

var uid = firebase.auth().currentUser.uid;
  firebase.database().ref().child('accounts').child(uid).set({
    email: user.email,
    userId: uid
  })

我应该创建另一个函数吗?

这些是我的 firebase 数据库中的规则。建议使用这个吗? 附加问题: 我想创建一个用户 Angular 色:教师和学生。教师可以创建教室、添加学生、查看学生列表。而学生可以查看他/她的同学和老师。我该怎么做?

    {
  "rules": {
    "users": {
      "$uid": {
        ".read": false,
        ".write": "$uid === auth.uid"
       }
      }
    }
   }

最诚挚的歉意,但我对此很陌生;(

最佳答案

firebase.auth().createUserWithEmailAndPassword 函数返回一个 Promise: firebase.User

您只能用代码捕获异常,如果您将 .then 链接到函数上,您就可以获取用户信息并将该用户保存到数据中。

firebase.auth().createUserWithEmailAndPassword(email, password)
  .then(user => {
    // Save user here.
    return firebase.database().ref('/users/' + user.uid).set({
      email: user.email,
      uid: user.uid
    });
  })
  .catch(function(error) {
    // Handle Errors here.
  });

您关于教师/学生的其他问题非常广泛 - 尝试将其缩小到解决方案,如果您遇到某些具体问题,请创建一个新问题。

关于javascript - 注册帐户后如何将用户 uid 存储到 firebase 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52158098/

相关文章:

java - 在 Android 中测试时使用不同的 `google-services.json`

http - 为什么我们在使用HTTP协议(protocol)时需要指定端口号?

javascript - 如何合并两个对象数组

javascript - 在路线改变时 react 通量重置存储值

javascript - 具有多项选择的下拉列表

swift - Firebase 身份验证链接错误 - 用户只能链接到给定提供商的一个身份

html - CSS 问题 - 标题按钮和宽度

javascript - “循环”JavaScript 函数

javascript - 双击 JQuery

java - Firebase 数据库监听器返回空值