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

问题描述 投票:0回答:1

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

有人可以建议一种在 Promise 中获取文档 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);
    });
javascript firebase google-cloud-platform google-cloud-firestore
1个回答
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()
方法,“如果未指定路径,则返回的
DocumentReference
将使用自动生成的唯一 ID”。

请注意,这与您是否使用

DocumentReference
写入数据库的事实无关。换句话说,自动生成的唯一 ID 是在客户端中生成的,而不是在 Firestore 后端中生成的。请注意,这不是异步操作,因此不需要“在 Promise 中获取文档 id”。


最后请注意,

set()
方法不会返回文档的快照(您的问题标题为“成功时获取文档快照)”,而是返回
Promise<void>

© www.soinside.com 2019 - 2024. All rights reserved.