Node express(typescript)|全局序列化日期类型为epoach ms



我希望配置基于节点的API后端,以将所有日期类型序列化为Epoch millis,而不是ISO。

例如,如果我有以下接口:

export interface Profile {
updatedAt: Date;
updatedBy: string;
}

当我将结构返回给客户端时:

return res.status(OK).json(myProfile);

我得到以下回复:

"updatedAt": "2021-06-08T17:06:44.412Z",
"updatedBy": "825e9b827ce329a7ddc8fbdc3f714cbd1c239182"

我希望收到:

"updatedAt":  1623172004412,
"updatedBy": "825e9b827ce329a7ddc8fbdc3f714cbd1c239182"

并且为我的所有端点全局地做一次有什么想法吗?

要为任何字段任意对象执行此操作,您可以定义一个新函数:

let customJSON = (obj) => {
Object.entries(obj).map(([k,v]) => v instanceOf Date && (obj[k] = new Date(v).getTime()));
return obj;
}

然后在Express中将此功能注册为中间件:

app.use((req, res, next) => {
const originalSON = res.json
res.json = (status, data) => {
originalSON.call(res, customJSON(data));
}
next();
});

这不需要更改您的呼叫站点:

return res.status(OK).json(myProfile);

最新更新