执行时,基于Web的Firebase代码运行多次

时间:2019-01-11 08:20:19

标签: javascript web firebase-realtime-database

我正在尝试将一些数据更新到我的Firebase实时数据库中,但是由于某些原因,当我用新字符串显示代码时,代码会运行多次,这会弄乱代码的输出。

下面是我尝试过的工作,我尝试为ref.update()创建一个新函数,但是同样的事情再次发生,我在代码的注释中指出了代码返回的确切位置。 / p>

function fire_base_db() {
    var ref = firebase.database().ref();
    ref.on("value", function(snapshot) {
        r = snapshot.val();
        var ham_db = r.hams.spam_words;
        var spam_db = r.spams.spam_words; //contains spam data now
        console.log('function 1')
        inputstring(ham_db, spam_db);
    }, function(error) {
        console.log("Error: " + error.code);
    });
}
inputstring(ham_db, spam_db); //just a random function i need 
spam_prop(user_string_toknized, spam_db, ham_db); //yet another 
function spam_or_ham()

function spam_or_ham() {
    var final_value = " ";

    if (total_spam_probablity < total_ham_probablity) {

        console.log("ham");
        final_value = "ham";
    } else {

        console.log("spam");
        final_value = "spam";
    }


    if (final_value = "spam") {
        var ref = firebase.database().ref("hams/spam_words/");

        ref.update(old_words_spam_2);
    } else if (final_value = "ham") {
        var ref2 = firebase.database().ref("spams/spam_words/")
        ref2.update(old_words_ham_2)
    };


    for (var a in new_words_spam) {
        new_words_spam[b] = 1
    }

    for (var b in new_words_ham) {
        new_words_ham[a] = 1;
    }


    if (final_value = "spam") {
        var ref9 = firebase.database().ref("spams/spam_words/")

        ref9.update(new_words_spam)

    } else if (final_value = "ham") {
        var ref2 = firebase.database().ref("hams/spam_words")
        ref2.update(new_words_ham)
    }

}
fire_base_db_upadt_new_words();
fire_base_db_upadt_new_words_2();

第一个函数fire_base_db()用于从数据库读取数据,接下来的两个函数只是输出的一些步骤,最后一个函数spam_or_ham是在代码进入时出现错误的位置if语句并到达ref9.update部分,它在第一个函数中运行回到ref.on,并运行多次,每次执行直到ref9部分,最后一次执行除外完整的代码已执行,我希望完整的代码本身在第一次执行。

0 个答案:

没有答案