我遇到了上载Firestore文档的功能异常行为。在下面的代码中,文档中更新的值是keyValue:valueValue,而不是访问存储要在Firestore文档中更新的期望字段的常量。
它引发错误:声明了'keyValue',但从未读取其值。这意味着将使用实际值“ keyValue”代替常量keyValue。
有什么建议吗?
function createObjectDocument(document: any, caseNumber: String)
{
document.get().then(function(doc: any) {
if (doc.exists) {
console.log("Document data:", doc.data());
for (let [key, value] of Object.entries(doc.data())) {
let keyValue = key;
let valueValue = value;
console.log(`${key}: ${value}`);
if (key != "CaseRefArray") {
db.collection("casesToExport").doc(caseNumber).update({
keyValue: valueValue
})
.then(() => {
console.log("Successfully updated document!");
}).catch((error: any) => {
console.error("Error updating document: ", error);
});
}
}
} else {
console.log("No such document!");
}
}).catch(function(error: any) {
console.log("Error getting document:", error);
});
}
答案 0 :(得分:3)
据我了解,您正在尝试发送对象{ }
并使用变量设置对象的键,而是创建一个对象,该对象的键是变量的名称,而不是变量的内容。对此的快速解决方案是将keyValue封装在数组中,然后将对象传递给.update()
,例如:{ [keyValue]: valueValue }
,这是ES6中已添加的功能。我建议您看看MDN docs,因为对于任何JavaScript开发人员来说都有很多有价值的信息。