如何在Node / Express中获取QueryString?

时间:2015-06-08 17:16:14

标签: javascript node.js express parameters query-string

如何从一个页面向另一个页面发送/获取查询字符串?

我正在使用:node version v0.12.3000 express 3.20.3

我正在尝试这种方式:

page1.js

function p1(req, res){
    res.render('page1');
};

exports.p1= p1;

exports.post_enviar = function(req, res){
    var param1 = req.body.param1;
    res.render('page2', { param1 });
}

page2.js

function p2(req, res){
    res.render('page2');
};

exports.p2= p2;

exports.get_enviar = function(req, res){
    var param1 = req.params.param1;
    console.log("param1: "+param1);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

简短的回答:你不能这样做。

长(呃)回答:您尝试做的事情涉及在一个路由处理程序中排队消息,该消息将被另一个路由消耗,或者只是简单地在它们之间共享状态。

post_enviar导出是无状态的。它没有引用自身之外的任何数据。

要演示:(警告,不要这样做)......如果您有两个模块用于这样的路径控制器:

// route1controller.js
var lastQuery = {};
module.exports.route1controller = function (req, res, next) {
  lastQuery = req.params;
  res.render(...);
}
module.exports.lastQuery = lastQuery;

// route2controller
var lastQuery = require('./path/to/route1controller').lastQuery;
module.exports.route2controller = function (req, res, next) {
   res.send(lastQuery);
}

然后,route2controller呈现的页面将获取最后在请求中发送到route1controller的参数的对象(或数组)。这只是两个控制器之间共享状态的粗略方式,你真的不想这样做。考虑一个更易于管理的解决方案,例如记录(写入平面文件或数据库)请求到给定路由,然后在另一个页面上以人类可读的方式解析它们。

如果您希望在一个页面上获取有关向另一个页面发出请求的实时信息,您需要查看更复杂的解决方案,例如websockets或对当前数据进行轮询。