Nodejs как передать параметры в экспортируемый маршрут из другого маршрута? - PullRequest
0 голосов
/ 05 апреля 2020

Предположим, я экспортирую модуль "/ route1" в route1. js, как мне передать параметры в этот маршрут из "/ route2", определенного в route2. js?

route1. js

module.exports = (app) => {
    app.post('/route1', (req,res)=>{
         console.log(req.body);
    });
}

route 2. js

const express = require('express');
const app = express();
//import route1 from route1.js
const r1 = require('./route1')(app);

app.post('/route2', (req, res) => {

   //how to pass parameters?
   app.use(???, r1) ?
})

Короче говоря, вывод маршрута 1 зависит от ввода с маршрута 2.

1 Ответ

0 голосов
/ 05 апреля 2020

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

Если вы опишите, какова реальная реальная проблема, которую вы пытаетесь решить, мы можем помочь вам с некоторыми из различных инструментов, имеющихся там. должны использовать для управления состоянием от одного запроса к следующему на http-серверах. Но нам действительно нужно знать, в чем состоит РЕАЛЬНАЯ проблема мира, чтобы знать, что лучше всего предложить.

Доступны следующие общие инструменты:

  1. Установить повара ie как часть первого ответа с некоторыми данными в повара ie. При следующем запросе от этого клиента предыдущий повар ie будет отправлен вместе с ним, чтобы сервер мог увидеть, что это за данные.

  2. Создать объект сеанса на стороне сервера ( используя express -сессию, вероятно) и установите некоторые данные в объекте сеанса. Во втором запросе вы можете получить доступ к объекту сеанса, чтобы получить ранее установленные данные.

  3. Вернуть данные клиенту в первом запросе и заставить клиента отправить эти данные обратно в 2-й запрос либо в строке запроса, либо в полях формы, либо в пользовательских заголовках. Это был бы действительно способ сохранения состояния на сервере. Любое требуемое состояние сохраняется в клиенте.

Какой вариант приводит к лучшему дизайну, полностью зависит от того, какую проблему вы на самом деле пытаетесь решить.


К вашему сведению, вы НИКОГДА не встраиваете один маршрут в другой, как вы указали в своем вопросе:

app.post('/route2', (req, res) => {

   //how to pass parameters?
   app.use(???, r1) ?
})

Что нужно сделать, это установить новую постоянную копию app.use(), которая действует для всех входящих запросов каждый раз, когда ваш app.post() маршрут пройден. Они будут накапливаться вечно.

...