【发布时间】:2021-09-11 14:24:30
【问题描述】:
我正在使用 Node.js(我处于初学者级别)和 Google Cloud Firestore,我遇到了让我的地图函数等待我的 getStuff()-函数的问题,而是返回一个 Promise 而不是值/文本本身。
我有两个这样的功能:
function getUserData() {
return db.collection('users').get()
.then((querySnapshot) => {
var docs = querySnapshot.docs.map(doc => [doc.data(), doc.id, getStuff(doc.id)])
console.log(docs)
return docs
});
}
function getStuff(doc_id) {
return db.collection('users').doc(doc_id).collection('tweets').limit(1).get()
.then((querySnapshot) => {
var docs = querySnapshot.docs.map(doc => doc.data());
console.log("TWEETS", doc_id, docs[0]['text']);
return docs[0]['text']
});
}
getStuff() 函数生成控制台日志结果为:
TWEETS DAU86mxIhmD6qQQpH4F God’s country!
TWEETS JQHTO0jUjAodMQMR6wI I’m almost there Danny!
而getUserData() 中的console.log(docs) 返回:
[
{
name: "John McClane",
twitter: 'john4'
},
'Yn4rEotMR02jEQSqdV4',
Promise { <pending> } // <- This is where the tweet should have been
]
我不熟悉 Promises 和 await/async,我无法让它工作。如何设置我的 getUserData 函数,以便它提供 Tweet 文本而不是 Promise { pending }?
【问题讨论】:
标签: node.js google-cloud-firestore async-await promise