您可以将 response.json 与集合而不是数组/列表一起使用吗?



我正在尝试从Firestore获取数据。因为我试图根据日期范围(fromDate 和 toDate(进行检索,所以我决定使用两个单独的查询。第一个在 ToDate 之前获得婚礼,第二个在 fromDate 之后获得婚礼。然后,我想在 SET 中添加两者的结果,以避免重复。但是当我使用 response.json 并传入 resultSet 时,它显示为空。但是,如果我将结果设置为列表,它会吐出我正在寻找的数据。

这是我现在的代码:

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));
};

我在网上找不到任何关于与 response.json 的集合兼容性的信息,但我不明白为什么它不能接受 Set。

任何帮助将不胜感激!

您无法将 JavaScriptSet转换为 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()));

这是以下各项的直接副本:

JSON 字符串化集合

最新更新