запрос доступа в expressjs 3 представления

Можно ли получить доступ к параметрам моего запроса в моих представлениях в ExpressJS 3?

У меня есть URL: http://example.com?search=blah

И, на мой взгляд, я хотел бы получить доступ к параметру поиска

Я могу передать его как местный житель, но интересно, могу ли я получить к нему доступ напрямую - мои эксперименты не увенчались успехом.

Не ищу плюсов и минусов прямого доступа - просто хочу знать, возможно ли это и как.


person cyberwombat    schedule 26.11.2012    source источник


Ответы (3)


Вот несколько способов получить доступ к req.query из вашего представления:

Установите его как локальный в вызове render

function(req, res) {
  res.render('myview', {query: req.query});
};

в вашем представлении вы можете получить доступ к search как query.search.

Установить res.locals

function(req, res) {
  res.locals.query = req.query;
  res.render('myview');
};

в вашем представлении вы можете получить доступ к search как query.search.

Использовать промежуточное ПО

Это похоже на предыдущий пример, но мы можем использовать промежуточное ПО многократно.

function(req, res, next) {
  res.locals.query = req.query;
  next();
};

Для любого маршрута, использующего указанное выше промежуточное ПО, будет установлено значение res.locals.query.


редактировать

Похоже, я неправильно понял вопрос. Намерение состояло в том, чтобы увидеть, можно ли получить доступ к данным запроса без использования вышеуказанных методов. Насколько я знаю, нельзя. Надеюсь, что вышеизложенное все еще будет полезно для некоторых читателей.

person David Weldon    schedule 26.11.2012
comment
Я думаю, он знает это. Он хочет получить к нему доступ «напрямую». Я могу передать его как местный житель, но интересно, могу ли я получить к нему прямой доступ - person Pickels; 26.11.2012
comment
Извините, я пропустил немного о непосредственно в конце вопроса. Я надеюсь, что мой ответ все еще может быть полезен людям, которые ищут название вопроса. Похоже, я только что получил свой первый отрицательный голос на SO. Это делает меня грустной пандой. - person David Weldon; 27.11.2012
comment
Похоже, то, что я хочу, может оказаться невозможным - если ответов не будет, я отмечу ваши как действительные, поскольку это лучшее, чего можно достичь, и это прекрасный ответ, Панда. - person cyberwombat; 27.11.2012
comment
Звучит неплохо. Я добавлю примечание к ответу, объясняющее ситуацию. - person David Weldon; 27.11.2012

Я почти уверен, что только местные жители получают представление.

Не ищу плюсов и минусов прямого доступа - просто хочу знать, возможно ли это и как.

Нет плюсов и минусов. Это как сказать, что я хочу умножить 15 на 0, но не хочу, чтобы ответом было яблоко.

person Pickels    schedule 26.11.2012

промежуточное ПО:

function(req, res, next) {
  res.locals.param = req.param;
  next();
};

Посмотреть:

<%= param.search %>
person chovy    schedule 26.11.2012