javascript - 如何为所有 res.json() 表达添加时间戳

标签 javascript node.js json express

我有一堆发送 JSON 响应的路由器。我不想添加

{...,"timestamp": new Date()}

对每一个回复。以及其他属性,如 baseurl 等

最佳答案

就像在任何正常编码中一样,如果您想将通用操作应用于一堆方法,则创建一个共享函数并从所有这些方法调用该函数,而不是 res.json(...) .

function sendJsonExtra(res, obj) {
    obj.timestamp = Date.now();
    obj.baseurl = ...
    res.json(obj);    
}

然后,只要在您想要将这组公共(public)属性添加到对象的任何地方,就可以使用此函数来代替 res.json()

您还可以使用中间件来将此函数作为方法添加到 res 对象中,这样您就可以根据需要调用 res.sendJsonExtra(obj)结构更好。

// middleware to add `res.sendJsonExtra()` method to each request
// so other code can then call it as needed
function jsonExtra(req, res, next) {
    res.sendJsonExtra = function(obj) {
        obj.timestamp = Date.now();
        obj.baseurl = ...
        res.json(obj);    
    }
    next();
}

router.use(jsonExtra);

然后,任何想要添加额外数据的路由处理程序都可以调用 res.sendJsonExtra(obj)。这让每个路由处理程序决定是否要添加额外的属性,并且与猴子修补 res.json() 来改变其行为相比,它使代码更加 self 记录。

关于javascript - 如何为所有 res.json() 表达添加时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59939758/

相关文章:

javascript - 当我想接收 json 数组时 $.getJSON() 返回错误

javascript - 试图让我的社交链接在悬停时保持静止

ios - SWIFT 2.1 - 获取 JSON

json - 在bash中解析二维JSON数组

node.js - 即使我允许在服务器上使用cors,Socket.io也会给出CORS错误

python - 如何自定义排序要在 json.dumps 中使用的字典列表

javascript - 获取配置 JSON 的主干和最佳实践

javascript - 如何将字符添加到 JSON 文件的末尾?

javascript - 如何为 Sequelize 模型设置外键?

node.js - 将 iisnode 指向嵌套在 iis 网站文件夹中的 server.js 文件