从Node + Express API中提取使用res.json发送的信息

Extracting Information Sent Using res.json From a Node + Express API

本文关键字:json res 信息 Node Express API 提取      更新时间:2023-09-26

我正在构建一个相对简单的端点,在进行简短的数据库查询和计算后应该返回一个数字。问题是,我不确定我应该如何发送到前端,所以它很容易访问那里。特别是,我一直在使用res.json()方法,但是当console.log 'ed时,它返回一个巨大的对象,其中所讨论的数据无处可找。

我如何从API发送数据并在前端接受它?也就是说,我假设它将以JSON形式出现,但我想知道如何解压缩它。

代码如下:

router.get('/current/:id', function(req, res){
    var collection = db.get('Activity');
    var started = false;
    var seconds;
    //Important to use findOne here to get an object back instead of an array
    collection.findOne({_id : req.params.id }, function(err, activity){
        if (err) throw err;
        var dateNow = (new Date()).getTime();
        console.log("activity in /current/:id is: " + activity);
        if (activity.runtime) {
            var dateStart = (Date.parse(activity.runtime.startDate));
            seconds = Math.round((dateNow - dateStart) / 1000);
            started = activity.runtime.started;
            console.log("dateNow: " + dateNow);
            console.log("dateStart " + dateStart);
            console.log("seconds " + seconds);
            console.log(activity.runtime.started);
        } else {
            started = false;
            seconds = 0;
        }
        if (started && (seconds > 0)) {
            //res.json(seconds);
            console.log(res.json(seconds));
        }
        else {
            //res.json(0);
            console.log(res.json(seconds));
        }
    });
});

您只需要关心响应内容,您可以通过以下方式发送响应:

 if (started && (seconds > 0)) {
     console.log(seconds);
     res.send({data : seconds});
 }else {
     res.send({data : 0});
  }

,客户端将接收数据为:

{data : 0}