Firebase更新数据库自动推送密钥生成两次?

时间:2017-06-29 14:29:41

标签: javascript firebase firebase-realtime-database

我有一个非常奇怪的错误。我通过调用引用上的update()来更新firebase数据库引用。在我调用update之前,我在firebase上使用push()。key来查询随机密钥。如下所示。

push().key

我有一个触发更新功能的按钮,它确实更新了我的参考但是出于一些奇怪的原因,虽然按钮只触发了这个函数一次(我已经记录了函数的调用,它只被调用一次)它正在创建2个autoId密钥并复制数据库条目。正如我所说,按钮触发一次,但引用会更新两次。所以我有两个条目,而不是一个。

这是我单击按钮时调用的函数。

function saveTimesheetEntry(weekNo, hours, payrate, type, theId) {

    console.log("Week Number: " + weekNo);
    console.log("Hours: " + hours);
    console.log("Pay Rate: " + payrate);

    var amount = hours * payrate;
    var vat = amount / 100 * 20; 

    console.log("Amount: " + amount);
    console.log("VAT: " + vat);
    console.log("Type: " + type);

    var autoId = contractorRef.push().key; // This is the generation of the key

    databaseRoot.ref('contractors-test/' + userObject.uid + '/timesheets-sub/weeks/'+weekNo).update({
        [autoId]:{ // Here I am using the generated key but its creating 2 separate entries in the db
            "hours":hours,
            "payRate":payrate,
            "amount":amount,
            "vat":vat,
            "type":type,
            "status":"submitted"
        }
    });

    databaseRoot.ref('contractors-test/' + userObject.uid + '/timesheets-sub/weeks').once('value', function(snapshot){

        $('#status-'+theId).removeClass("label-danger");
        $('#status-'+theId).addClass("label-warning");
        $('#status-'+theId).text("Submitted");
        $('#submitted-ts').html("");
        layoutSubTimeSheets(snapshot);

    });
}

正如你所看到的,我向firebase请求一个autoId,然后使用它作为我的密钥,但我得到2个自动密钥,因此使用上述对象获得2个数据库条目。

0 个答案:

没有答案