get()
方法调用时不会立即返回数据,因为数据是异步加载的。它返回一个 Promise 对象,一旦数据加载完成就会被解析。这意味着你可以使用 await
(如 Francisco 的答案中所示)或者(如果没有 await
可用)实现 then()
方法:
db.collection('users').doc(''+ sender_id).get().then(function(doc) {
console.log(doc.data().name);
});
需要注意的常见陷阱: doc.data()
只在回调函数中可用。
const userRef = db.collection("users").doc("1234")
const userDoc = await userRef.get()
const {name} = userDoc.data()
console.log(name)
另一种方式是:
const givename = await db.collection("users").doc("YOUR DOCUMENT NAME").get();
console.log(givename.data().name);
记得将这段代码放在一个async
函数中,因为我们在这里使用了await
await
,就像Francisco的回答中所示。但如果你不理解异步调用,有时它也是一个泄漏的抽象。 - Frank van Puffelenawait
是ES2017中引入的关键字(如果我没记错的话)。它在Node 8及更高版本中可用。如果您想尝试使用它,我建议在“在node.js中使用await”的几个搜索上进行一些搜索,因为它们可能会提供比我能够快速分享的更好的解释。 - Frank van Puffelen