我正在使用Node.js和Express.js,我试图将一个对象数组从路由传递到其他路由。
我试图通过QueryString,但typeof
说它是一个对象,它不能正常工作。
我应该以某种方式将其传递给/contacts
,或者将QueryString的结果转换为对象数组并使用它。
这是我尝试做的事情:
app.get('/names', function(req, res) {
var arr = new Array();
arr.push({name: 'John'});
arr.push({name: 'Dani'});
res.redirect('/contacts?arr=' + arr);
})
app.get('/contacts', function(req, res) {
var arr = req.query.arr;
console.log(arr[0].name);
})
希望你能提供帮助, 谢谢。
答案 0 :(得分:1)
您可以使用JSON.stringify。
app.get('/names', function(req, res) {
var arr = new Array();
arr.push({name: 'John'});
arr.push({name: 'Dani'});
res.redirect('/contacts?arr=' + JSON.stringify(arr));
})
app.get('/contacts', function(req, res) {
var arr = req.query.arr;
console.log(JSON.parse(arr));
})
答案 1 :(得分:0)
另一种方法是使用app.locals
。
基本上,它允许您在应用程序的生命周期中存储一些变量。
对于路线,将有req.app.locals
。
那么如何使用呢?
app.get('/names', function(req, res) {
var arr = new Array();
arr.push({name: 'John'});
arr.push({name: 'Dani'});
req.app.locals.nameOfYourArr = arr;
res.redirect('/contacts');
})
app.get('/contacts', function(req, res) {
var arr = req.app.local.nameOfYourArr;
console.log(arr[0].name);
})
(可以找到更多信息here)