错误:FIREBASE FATAL ERROR:数据库初始化多次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:FIREBASE FATAL ERROR:数据库初始化多次相关的知识,希望对你有一定的参考价值。

Introduction

我正在开发一个使用firebase作为数据库的应用程序(RealTime Database)。我们在后端(基于Node Express构建的REST API)上使用firebase-admin仅用于需要管理员权限的操作,例如用户身份验证,用户帐户删除等。

问题摘要

所以,我想要做的是,被管理员批准的用户,它的状态应该变为true,因为它的状态是待定的。因此,下面给出的代码过滤掉特定用户并在数据库中查找用户并将状态更改为true.I已经注释了处理数据库操作的代码。

Problem :

我在这面临两个问题:

  1. 如果我对数据库操作代码进行了注释,并且如果有新的注册,则会从admin向用户发送两封邮件。首先是'注册成功'和第二'注册期间的错误'(根据代码不应该发生)。
  2. 如果我删除数据库操作的注释,则会发生以下错误:

错误(运行时):@ firebase / database:FIREBASE警告:用户回调引发了异常。

错误:FIREBASE FATAL ERROR:数据库初始化多次。请确保数据库URL的格式与每个database()调用匹配。

守则如下:

router.get('/approval', (req, res) => {
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            let errors = [];
            var k = 0;
            var email = req.query.email;
            var keys = Object.keys(userData);
            console.log("email : " + email);
            for (k = 0; k < keys.length; k++) {
                console.log("user email : " + userData.email[k]);
                if (!(email.localeCompare(userData.email[k]))) {

                    console.log("user email : " + userData.email[k]);
                    var password = userData.password[k];
                    console.log("password taken ");
      firebase.auth().createUserWithEmailAndPassword(email, password)
       .then(function (user) {
            console.log("inside firebase");

            //Code to change user's approval status to true


            /*  var reference = require('../DatabaseRef/reference'); 
                var ref = reference.usersRef;
                ref.on('value', gotData, errData);
                 function gotData(data) {
                 var userData = data.val();
                 if (userData != null) {
                     var keys = Object.keys(userData);
                     var newPostKey = keys[k]; 


          firebase.database().ref().child('/BMS/UserDetails/' + newPostKey)
          .update({ approve: true });

                        }
                 }    

           function errData(err) {
                           console.log(err);
                       }

                                             */



      let transporter = nodemailer.createTransport({
         service: 'gmail', 
         auth: {
                user: '**********@gmail.com', 
                pass: '**********'
                }
         });

      let mailOptions = {
        from: '********@gmail.com', 
        to: email,
        subject: "Registration Successful", 
        text: "Registration is complete ,now you can try logging in through 
               link given below :.", 
        html: "<a href='http://localhost:5005/'>Login</a> " 
                            };

             transporter.sendMail(mailOptions, function (err, info) {
                                if (err)
                                    console.log(err)
                                else
                                    console.log(info);
                            });

                            errors.push({ msg: "Registered Successfully" });
                            res.render('./addUser', { userData, errors });


                        })

      .catch(function (error) {
                            var errorCode = error.code;
                            var errorMessage = error.message;


                            console.log("inside catch");

                            let transporter = nodemailer.createTransport({
                                service: 'gmail', 
                                auth: {
                                    user: '*********@gmail.com', 
                                    pass: '**********' 
                                }
                            });


        let mailOptions = {
          from: '**********@gmail.com', 
          to: email, // list of receivers
          subject: "Error during user registration", 
          text: "Error Found : " + errorMessage, 
          html: "<a href='http://localhost:5005/signup'>Register</a> " 

           };


       transporter.sendMail(mailOptions, function (err, info) {
            if (err)
                 console.log(err)
             else
                   console.log(info);
            });

       errors.push({ msg: errorMessage });
       res.render('./addUser', { userData, errors });

          })

                    break;
                }
            }
            console.log("out of for loop");
        }

        else {
            console.log("User not present");
            res.redirect('/')
        }

    })

})
答案

关于数据库致命错误,这对我有用:

var db = admin.database();
db.ref("Path till child"+newPostKey).update({approve : true});

在这种情况下,路径直到孩子=“BMS / UserDetails /”

以上是关于错误:FIREBASE FATAL ERROR:数据库初始化多次的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Build failed,fatal error: module 'firebase_auth' not found @import firebase_auth;

edk2配置错误"NMAKE : fatal error U1073: 不知道如何生成tbuild",应该如何解决?

VS2008+ Win10 之 WinCE SDK 编译错误 c1xx : fatal error C1023 & fatal error C1001

Fatal error: Maximum function nesting level of '100' reached, aborting!

[PHP] error_reporting可以屏蔽Fatal error错误

php捕获Fatal error错误与异常处理