更新Firestore字段,但字段是可变的

时间:2020-07-12 13:15:19

标签: javascript firebase google-cloud-firestore

是否可以将要使用Firestore更新的字段作为变量传递?

我想创建一个功能来更新文档,例如...

updateFirebaseDocument('enquiries', 'asdaasdasds, 'status', '1'))

具有以下功能

export async function updateFirebaseDocument(collectionName, documentId, field, updateValue) {
    var doc = db.collection(collectionName).doc(documentId)
    return doc.update({
        field: updateValue
    })
    .then(function() {
        console.log("Document successfully updated!");
    })
    .catch(function(error) {
        // The document probably doesn't exist.
        console.error("Error updating document: ", error);
    });
}

这确实有效,但问题是它创建了一个名为field的字段,而不是更新status字段。有办法做到这一点,而不是对更新字段进行硬编码吗?

2 个答案:

答案 0 :(得分:1)

您可以不使用ES6

export async function updateFirebaseDocument(collectionName, documentId, field, updateValue) {
    var doc = db.collection(collectionName).doc(documentId)

    var obj = {}
    obj[field] = updateValue;
 
    return doc.update(obj)
    .then(function() {
        console.log("Document successfully updated!");
    })
    .catch(function(error) {
        // The document probably doesn't exist.
        console.error("Error updating document: ", error);
    });
}

答案 1 :(得分:0)

使用方括号为我解决了此问题。

      [field]: updateValue