'store.get'的问题……但是其他API调用似乎起作用

问题描述 投票:0回答:1

我正在使用带有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
node.js express store
1个回答
0
投票

我认为原因是您传递了req.params,即object,而您必须传递string

© www.soinside.com 2019 - 2024. All rights reserved.