成功将文档快照保存到Google Cloud Firestore中后,获取该文档的快照

时间:2020-07-29 13:37:51

标签: javascript firebase google-cloud-firestore

我正在测试以下代码以创建新文档并获取其快照,以便从快照中检索自动生成的文档ID。当我记录它时,它显示为未定义。

有人可以在诺言中建议一种获取文档ID的方法吗?

 db.collection("cities").doc().set({
        name: "Los Angeles",
        state: "CA",
        country: "USA"
    })
    .then(function(snapshot) {
        console.log("Document successfully written!" + snapshot);
    })
    .catch(function(error) {
        console.error("Error writing document: ", error);
    });

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

const docRef = db.collection("cities").doc();
const docId = docRef.id;

docRef.set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})
.then(function() { 
    console.log("Document successfully written!");
})
.catch(function(error) {...}
    

使用doc()方法,“如果未指定路径,则将自动生成的唯一ID用于返回的DocumentReference”。

请注意,这与您是否使用DocumentReference写入数据库无关。换句话说,自动生成的唯一ID是在客户端而不是Firestore后端中生成的。并且请注意,这不是异步操作,因此无需“在promise中获取文档ID”。


最后请注意,set()方法不会返回文档的快照(您用“成功获取文档的快照”为问题命名),而是返回Promise<void>