我有一个非常奇怪的错误。我通过调用引用上的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个数据库条目。