node.js - 您可以使用带有集合而不是数组/列表的 response.json 吗?
问题描述
我正在尝试从 Firestore 获取数据。因为我试图根据日期范围(fromDate 和 toDate)进行检索,所以我决定使用两个单独的查询。第一个在 ToDate 之前举行婚礼,第二个在 fromDate 之后举行婚礼。然后我想在 SET 中添加两者的结果,以避免重复。但是当我使用response.json 并传入resultSet 时,它是空的。如果我将 resultsSet 更改为列表,它会吐出我正在寻找的数据。
这是我现在拥有的代码:
exports.getWeddingsBasedOnDateRange = (request, response) => {
const weddingSearchParams = {
fromDate: new Date(request.body.fromDate),
toDate: new Date(request.body.toDate),
guests: request.body.guests
};
let weddingsBeforeToDate = [];
let weddingsAfterFromDate = [];
db.collection("weddings")
.where("toDate", "<=", weddingSearchParams.toDate)
.where("guests", "==", weddingSearchParams.guests)
.get()
.then(data => {
data.forEach(doc => {
weddingsBeforeToDate.push({
...doc.data(),
weddingId: doc.id
});
});
db.collection("weddings")
.where("fromDate", ">=", weddingSearchParams.fromDate)
.where("guests", "==", weddingSearchParams.guests)
.get()
.then(data => {
data.forEach(doc => {
weddingsAfterFromDate.push({
...doc.data(),
weddingId: doc.id
});
});
let resultSet = new Set();
resultSet.add(weddingsBeforeToDate);
resultSet.add(weddingsAfterFromDate);
return response.json(resultSet);
})
.catch(err => console.error(err));
})
.catch(err => console.error(err));
};
我在网上找不到任何关于 set 与 response.json 的兼容性的信息,但我不明白为什么它不能接受 Set。
任何帮助将不胜感激!
解决方案
您无法将 JavaScript 转换Set
为 JSON 格式,因为存储在集合中的数据不存储为属性。您可以对以下任何一项进行编码:
JSON.stringify([...s]);
JSON.stringify([...s.keys()]);
JSON.stringify([...s.values()]);
JSON.stringify(Array.from(s));
JSON.stringify(Array.from(s.keys()));
JSON.stringify(Array.from(s.values()));
这是以下内容的直接副本:
推荐阅读
- python - KeyError:使用本机 python 时为 12
- python - 使用熊猫的两个时间戳之间的差异每天剩余小时
- java - Hibernate:如何级联未映射的实体?
- c# - 取消订阅其他活动中的活动
- python - 如何绘制与 plt.contourf 的决策边界相同的决策边界线?
- google-sheets - 列出或自动完成现有字符串值,用于新的纯文本单元格
- java - 在centos中,当Tomcat 7关闭时,就发生了这很可能造成内存泄漏。不知道为什么
- react-native - Metro bundler 将生成的 Bundle 存储在哪里?
- c# - 使用服务参考的肥皂请求
- node.js - 选择一个文件,然后使用 Nodemailer 将其作为附件发送!节点