Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象数组从一条管线传递到另一条管线_Javascript_Node.js_Express - Fatal编程技术网

Javascript 将对象数组从一条管线传递到另一条管线

Javascript 将对象数组从一条管线传递到另一条管线,javascript,node.js,express,Javascript,Node.js,Express,我正在使用Node.js和Express.js,并尝试将一个对象数组从路由传递到另一个路由。 我试图通过QueryString,但是类型的表示它是一个对象,不能正常工作。 我应该以另一种方式将其传递给/contacts,或者将查询字符串的结果转换为对象数组并使用它 以下是我试图做的: app.get('/names', function(req, res) { var arr = new Array(); arr.push({name: 'John'}); arr.pus

我正在使用Node.js和Express.js,并尝试将一个对象数组从路由传递到另一个路由。 我试图通过QueryString,但是
类型的
表示它是一个对象,不能正常工作。 我应该以另一种方式将其传递给
/contacts
,或者将查询字符串的结果转换为对象数组并使用它

以下是我试图做的:

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);
})
希望你能帮忙,
谢谢。

您可以使用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));
})

另一种方法是使用
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);
})

(可以找到更多信息)

如果它为您解决了问题,您是否可以将其标记为answerd。这对任何一个偶然发现的人都有帮助。它不起作用,它给出了一个错误;'JSON中位于位置1',console.log(JSON.stringify(arr))的意外标记o给出了以下内容:[{“name”:“John”},{“name”:“Dani”}]它在哪里给出错误??在JSON.stringify或parse@Netside这与标题无关。如果您在响应客户端后试图读/写错误,则会出现您发布的错误。@Shivam I stand correct,您是对的。你的代码确实有效。只是自己检查了一下(在我以前编写的代码中使用了它)。很抱歉我会删除我之前的评论,但你的评论仍然会在那里,人们可能会想知道。不管是哪种方式,你的评论和回答都被高估了。不管怎样,对新手来说可能更好:)