2015-08-04 4 views
1

У меня есть URL-адрес, который принимает неизвестное количество строк запроса. Вот пример возможного URLКак работать с неизвестным количеством строк запроса в экспресс

/data/mydb.json?arg0="foo"&arg1=15&transaction=function(x, y)

и всей тела функции будет остальная часть URL, но я избавлю вас остальное. Запросы /data/:filename всегда будут принимать аргументы и функции в виде строк запроса. Поскольку req.query, похоже, не воспринимает переменные как аргумент, как я могу справиться с этим? Функция, занятая последней строкой запроса, не всегда принимает 2 аргумента. Буду признателен за любую оказанную помощь.

+1

Вместо того чтобы иметь arg , вместо этого используйте arg, и он должен стать массивом, что упрощает передачу непосредственно функции, используя .apply –

ответ

1

Самый простой способ - заменить arg0="foo"&arg1=15 на args=["foo",15], а затем передать их функции .apply.

Если вы знаете имена args, то вы можете использовать req.query, чтобы получить параметры. Если вы не знаете имена, и они должны быть переданы в функцию по порядку, вам может потребоваться использовать req.originalUrl и проанализировать ее вручную, так как вам, вероятно, не следует доверять, что req.query будет поддерживать правильный порядок параметров.

+0

Спасибо за ваш ответ. Я буду знать имена. Они всегда будут arg0 - некоторый аргумент позволяет называть его arg «n». Можно ли использовать req.query? Насколько я вижу, вам нужно сделать req.query.something, и это не может быть переменной, поэтому я не уверен, как это сделать. –

+0

'req.query' - объект javascript. Таким образом, вы можете сделать что-то вроде 'req.query.arg1', которое в вашем примере будет' 'foo" '. Если вам нужно получить к нему доступ с переменной, вы можете сделать что-то вроде «var x =» arg1 »; req.query [x]; 'который также будет' 'foo" '. – chilleren

+0

так что я могу сделать var args = [], а затем req.query [i] в ​​цикле for? что-то вроде этого –

Смежные вопросы