"存储.get"的问题...但是其他 API 调用似乎有效



我正在使用带有Node.js Express脚本的"存储"("https://www.npmjs.com/package/store"(模块。 它对我来说似乎主要是功能性的,我可以基于随机生成的ID创建一个存储密钥,我能够将数据记录到存储中,并循环访问"键"和"值"以确保它们存在。 我的问题是"store.get"命令不返回单个值...这是我的代码:

...
var bodyParser = require('body-parser');
const shortid = require('shortid');
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var _newToken = shortid.generate();
store.set(_newToken, { name: user.username, birthdate: user.birthdate, joinup: user.legacy, los: user.service, email: user.email })
//works fine, information is recorded in the store using a "key" of "_newToken" (a randomly generated ID) 
res.redirect('/members/dash/' + _newToken);
...
app.get('/members/dash/:tempid', urlencodedParser, function (req, res) {
var _member_info = [];
console.log(req.params);  //works fine, prints the randomly generated ID 'key' in the URL parameter...
// Loop over all stored values
store.each(function(value, key) {
console.log(key, '==', value)  //works fine, prints key and each value to console...
_member_info.push(JSON.stringify(value));  
});
console.log('contents of member array: ' + _member_info);  //works fine, prints seeded array to console... 
console.log('RETREIVE NAME: ' + store.get(req.params).name);  //throws 'TypeError: Cannot read property 'name' of undefined' ...why??
// Remove current entry
store.remove(req.params);  //seems to work fine, no error
});

之前有没有人使用过这个模块可以解释我的问题是什么? 传递临时数据似乎是一个很好的解决方案,但是我不明白为什么我无法使用".get"命令访问存储信息的各个部分......当"store.set","store.each"和"store.remove"似乎都在工作时。 我提前谢谢你。

我做了以下修改...而是将字符串传递给"store.get"命令,但是我仍然收到相同的错误......

var _member_convert = JSON.stringify(req.params);
var _splits = _member_convert.split(":");
console.log('TEST RETRIEVE: ' + store.get(_splits[1]).name);  //throws same error as previous

以下是控制台日志的输出:

console.log(req.params);
console.log('req.params JSON: ' + _member_convert + " ...splits " + _splits); 
console.log('TEST RETRIEVE: ' + store.get(_splits[1]).name);  //error below throws here
{ tempid: 'xg_KO6Z9' }
req.params JSON: {"tempid":"xg_KO6Z9"} ...splits {"tempid","xg_KO6Z9"}
xg_KO6Z9 == { name: 'admin',  //printout from the 'store.each' here
birthdate: '3-14-1982',
joinup: '2019-12-16',
los: 'unknown',
email: 'me@somehost.com' }
TypeError: Cannot read property 'name' of undefined  //'store.get' error thrown
at c:Usersdevelopnodejseasyrtc_p2pp2p_server_H.js:1658:54
at Layer.handle [as handle_request] (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterlayer.js:95:5)
at next (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterroute.js:137:13)
at urlencodedParser (c:Usersdevelopnodejseasyrtc_p2pnode_modulesbody-parserlibtypesurlencoded.js:91:7)
at Layer.handle [as handle_request] (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterlayer.js:95:5)
at next (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterroute.js:137:13)
at Route.dispatch (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterroute.js:112:3)
at Layer.handle [as handle_request] (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterlayer.js:95:5)
at c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterindex.js:281:22
at param (c:Usersdevelopnodejseasyrtc_p2pnode_modulesexpresslibrouterindex.js:354:14)

我认为原因是你通过了req.params这是一个object,你必须通过一个string

最新更新