我希望配置基于节点的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);