我正在使用带有Node.js Express脚本的'store'(“ 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 RETREIVE: ' + store.get(_splits[1]).name); //throws same error as previous
我认为原因是您传递了req.params
,即object
,而您必须传递string