【发布时间】:2020-06-22 14:50:34
【问题描述】:
所以我有一个 nodejs 网站。在我的客户端 javascript 中,我有一个 ajax 调用,我试图从我的 firestore 数据库接收数据。
但是我想不出一种方法将从 firestore db 检索到的数据发送到客户端,因为它被锁定在一个承诺中。
我目前在服务器端拥有的是
app.get("/updateCalendar", (req, res) => {
userId = req.query.userId;
let eventCount = 0;
let documents = {};
let eventsRef = db.collection("Events");
let query = eventsRef.where("userId", '==', 1).get()
.then(snapshot => {
let documents = {};
if(snapshot.empty) {
console.log("No events");
return;
}
snapshot.forEach(doc => {
documents[eventCount] = doc.data();
eventCount++;
});
return documents;
})
.catch(err => {
return err;
});
res.json(query)
});
无论如何,我可以将数据从承诺中返回到客户端吗?或者,是否有另一种从 Firestore 读取数据的方法,可以让我将数据发送回客户端。
谢谢
【问题讨论】:
-
您应该共享更多代码,尤其是响应 ajax 调用的 node.js 代码。你如何实现它(独立于 Firestore 部分)?换句话说,让我们假设您想要发回不在“Promise 中”的数据,比如一个简单的常量值。您将如何在您的环境中做到这一点?
-
即99%的nodejs代码对应ajax调用。
-
我对其进行了编辑以显示用于 ajax 调用的节点 js 端点的所有代码
-
那么
snapshot及其.empty属性和.forEach()方法是什么? -
doc.data()返回什么?
标签: node.js firebase promise google-cloud-firestore