猫鼬保存UTC,但需要在不同时区进行检索取决于用户时区

时间:2020-10-15 05:08:10

标签: express datetime mongoose timezone

猫鼬将所有日期保存为可以的UTC格式。

每个用户都有一个特定的时区。它将存储在用户的文档中。

我想发送任何文档,并将其日期转换为用户所在时区的客户端。

我知道如何设置一个值的格式,但是我正在寻找一种避免一一转换的解决方案。

解决方法将是客户端上针对每个值或递归修改响应的传递转换功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以汇总进行此操作。

让我们说您有此数据:

[
  {
    "_id": {
      "$oid": "5f18b5c87f9f9c0fd8322b60"
    },
    "createdAt": {
      "$date": "2020-07-22T21:55:20.575Z"
    },
    
  },
  {
    "_id": {
      "$oid": "5f19efac5cfa75483865eaa2"
    },
    "createdAt": {
      "$date": "2020-07-23T20:14:36.108Z"
    },
  }
]

您可以执行以下操作:

const timezone = "America/Chicago"

Model.aggregate([
    {
        $set: {
            localTime: {
                $dateToString: {
                    date: "$createdAt",
                    timezone
                }
            }
        },
    }
]);

聚合的结果将是:

[
  {
    "_id": ObjectId("5f18b5c87f9f9c0fd8322b60"),
    "createdAt": ISODate("2020-07-22T21:55:20.575Z"),
    "localTime": "2020-07-22T16:55:20.575Z"
  },
  {
    "_id": ObjectId("5f19efac5cfa75483865eaa2"),
    "createdAt": ISODate("2020-07-23T20:14:36.108Z"),
    "localTime": "2020-07-23T15:14:36.108Z"
  }
]

演示示例:https://mongoplayground.net/p/7IOGMrC2sf5