Javascript 节点恢复发送回一个整数?

Javascript 节点恢复发送回一个整数?,javascript,node.js,facebook,bots,restify,Javascript,Node.js,Facebook,Bots,Restify,这是当我尝试通过Facebook验证我的机器人URL时得到的结果。我知道这是一个数据类型问题。我正在发回一个字符串而不是int。下面是我的代码: server.get("/webhook/",function(req,res,next){ var token = req.query.hub.verify_token; if( token === process.env.VALIDATION_TOKEN ){ var challenge = parseInt( re

这是当我尝试通过Facebook验证我的机器人URL时得到的结果。我知道这是一个数据类型问题。我正在发回一个字符串而不是int。下面是我的代码:

server.get("/webhook/",function(req,res,next){
    var token = req.query.hub.verify_token;
    if( token === process.env.VALIDATION_TOKEN ){
        var challenge = parseInt( req.query.hub.challenge );
        res.send( req.query.hub.challenge );
    }else{
        res.send("Error, wrong validation token");
    }
    return next();

});

尽管有
parseInt()
res.send()
会发回一个字符串。如何让它发回一个int?

结果是
res.send
只发回每个的对象、数组、缓冲区或字符串(尽管express也是如此)

要发回整数,您有2(排序3)个选项:

  • 使用如下缓冲区:

    var buf = new Buffer(4);
    buf.writeUInt32BE(challenge, 0);
    res.send(buf);
    
  • 使用
    res.write(challenge)
    res.end(challenge)
    。有关更多信息,请参阅和

  • 您可以尝试
    res.end(req.query.hub.challenge.toString())


    据我所知,
    res.end
    希望有一个
    String
    类型作为参数。因此,将数字转换为字符串可能会起作用。

    Ok,结果表明req.query.hub.challenge实际上是一个整数。res.send()使它成为一个字符串好吧,我知道了。我不想深入研究,但是res.write()和res.end()发挥了神奇的作用:)@LittleChild是的,我正准备用这个或使用缓冲区的方法来回应。我会更新我的答案,以防其他人发现这一点question@LittleChild我已经更新了我的答案,以显示如何使用can-use
    res.send
    我正在使用节点Restify:)而不是Express:),但我仍然会接受答案