我可以存储一个响应对象在一个哈希表?

我已经开始编写节点应用程序,并且希望将requestresponse对象存储在散列表中。 对于我使用jshashtable的散列表。 当我将requestresponse对象存储在哈希表中并稍后获取它们时,在尝试使用response (无论是writeHead()还是仅使用console.log()打印writeHead() ,我会得到一个Object.keys called on non-object , 。 但是typeof返回objectresponse ,所以看起来, response正在被存储在jshashtable被操纵。 在jshashtable网站上,作者写道:“这里的对象用来松散地表示任何JavaScript对象或值。”,所以看起来像我应该能够存储任何JavaScript对象,包括response对象。

可以使用npm install jshashtable

这是一些复制问题的代码。

 var Hashtable = require('jshashtable'); var crypto = require('crypto'); var table = new Hashtable(); var http = require('http'); var fs = require("fs"); var home = fs.readFileSync('/some/random/html/home.html'); http.createServer(function(req, res) { crypto.randomBytes(8, function(ex, buf) { if (ex) throw ex; var userID = buf.toString('hex'); var state = { "req": req, "res": res } table.put(userID, state); var message = { "httpCode": 200, "humanCode": "OK", "contentType": "text/html", "data": home }; dataOut(userID, message, function(err, rtrn) { }); }); }).listen(80); function dataOut(userID, message, callback) { if(typeof callback === 'function') { var state; state = table.get(userID); if(state === null) { console.log("Can't get value"); callback("Can't get value from key.", null); } if(typeof state.res === 'object') { console.log('This is an object'); } //console.log(state.res); state.res.writeHead(message.httpCode, message.humanCode, message.contentType); state.res.write(message.data); state.res.end(); } } 

那么为什么我不能使用requestresponse后,将它们存储在jshashtable

我遇到的唯一错误是在第51行的state.res.writeHead...注释,工作正常,我可以使用响应对象。 res.writeHead的错误是你如何传递参数。 它应该是res.writeHead(status, {header_Name: header_value, another_header: another_value})