【问题标题】:Can you use response.json with a set instead of an array/list?您可以使用带有集合而不是数组/列表的 response.json 吗?
【发布时间】:2020-03-25 11:22:28
【问题描述】:

我正在尝试从 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。

任何帮助将不胜感激!

【问题讨论】:

    标签: node.js json list google-cloud-firestore set


    【解决方案1】:

    您无法将 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()));
    

    这是以下内容的直接副本:

    JSON stringify a Set

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多