node.js - 从nodejs中的firestore发送数据到客户端的ajax调用
问题描述
所以我有一个 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 读取的方法可以让我将数据发送回客户端。
谢谢
解决方案
该get()
方法是异步的,并返回一个Promise
与相应的QuerySnapshot
.
所以你应该在then()
方法内返回数据,如下:
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");
throw new Error("No events");
}
snapshot.forEach(doc => {
documents[eventCount] = doc.data();
eventCount++;
});
res.json(documents);
})
.catch(err => {
res.status(500).send('Error');
});
});
推荐阅读
- javascript - Woocommerce:如果订阅取消,则隐藏订单详细信息
- cmock - 如何为每个测试使用不同的头文件?
- javascript - 如何确定在 JavaScript 中调用另一个窗口上的函数的窗口
- javascript - 如何显示索引数组的特殊词?
- javascript - 在操作数是类型化数组的 JavaScript 中,最有效的乘法、加法、减法和除法方法是什么?
- python - Django多对多字段未正确保存在数据库中
- function - 从另一个类/文件调用 ContentView 中的函数
- javascript - GravityForms - 通过 javascript 触发价格计算
- php - 如果 $_SESSION['uname'] 不等于 "teacher",返回主页面
- c++ - 按行/索引从备忘录复制文本