将路径中的对象数组传递给路径

时间:2017-06-25 09:47:42

标签: javascript node.js express

我正在使用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);
})

希望你能提供帮助, 谢谢。

2 个答案:

答案 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