Firestore中的数据未更新

时间:2018-10-26 10:21:04

标签: javascript firebase google-cloud-firestore

这是一个javascript函数,打算对FireStore执行更新,该更新不起作用。

如果任何人都能看到代码中的问题,我会感到非常高兴。

function makeUpdate(key,name) {
    let theCollection = db.collection("InformationList"),
    infoUnit = theCollection.doc(key).get().then(function(doc) {
        if (doc.exists) {
            console.log("infoUnit -name-:" + doc.get("name"));
            console.log("infoUnit -telephone-:" + doc.get("telephone"));
            let updateDico = {};
            updateDico["name"] = name;
            doc.update(updateDico);
        } else {
            console.log("embassyUpdate --> No such document!");
        }
    }).catch(err => {
        console.log("Error getting documents (in makeUpdate)", err);
    });
}

除了不执行预期的更新外,它还会在日志中打印三则消息:

  • infoUnit -name-:一些名称
  • infoUnit-电话-:一些电话号码
  • 获取文档(在makeUpdate中)时出错

从中我可以看到在数据库中找到了一条符合预期的记录。但同时发生未知错误。

3 个答案:

答案 0 :(得分:1)

update()DocumentSnapshot对象)上没有doc方法。 DocumentSnapshot仅包含从get()读取的数据。如果要将数据写回到文档中,则需要使用DocumentReference对象,可能与调用theCollection.doc(key)时得到的对象相同。

答案 1 :(得分:1)

没有称为update()的方法,您可以在doc DataSnapshot对象本身上调用该方法。

您必须对从set()获得的Document Reference使用doc.ref方法来更新引用。

答案 2 :(得分:0)

这就是我更新数据的方式。

     await db
      .collection('collectionName')
      .doc('documentId')
      .update({
        name: "Updated Name",
        telephone: "0000000000"
      });

您需要知道文档ID,您可以像这样更新您的值。