маршрут с параметрами 404 не найден - PullRequest
0 голосов
/ 15 июня 2019

Мне понадобится некоторая помощь, так как после этой стадии я теряюсь, я пытаюсь выполнить маршрутизацию с параметрами, но после этого я теряюсь, как загрузить страницу на этот URL localhost: 3000 / dist / 16783 после того, как при маршрутизации страницы появляется сообщение404 Не Найдено.Мне нужна помощь, как я могу перейти на новую страницу после этого с идентификатором "16783" со значениями внутри таблицы, например: отслеживание не "16783" или представление загрузки на той же странице.

router.get('/dist/:awb', function (req, res, next) {
    res.render('dist', {
        AWB_NO: req.params.awb
    })
});

Этоне отображая страницу "dist", этот вопрос может относиться к этому маршрутизации с параметрами в нефрите с одной страницы на другую

EDIT: структура:

views:
   index.ejs
   track.ejs
   dist.ejs
routes:
   index.js
   track.js
   dist.js
app.js
package.json

app.js:

var indexRouter = require('./routes/index');
var trackRouter = require('./routes/track');
var distRouter = require('./routes/dist');

app.use('/', indexRouter);
app.use('/track', trackRouter);
app.use('/dist',distRouter);

track.ejs

столбец таблицы AWB НЕТ ссылки на страницу dist

 a.name(href="/dist/" + AWB_NO) #{AWB_NO}
            div
              td.min(data-label="Name") #{Product_Name}
              td.min(data-label="file") #{PCS}
              td.min(data-label="s_name") #{Weight}
              td.min(data-label="r_name") #{Gross_Weight}
              td.min(data-label="Date") #{DOP}
              td.min(data-label="Date") #{DOE}

Так что здесь актуальная проблема, например, когда у меня есть значениевнутри этого столбца "AWBNO", который ссылается на страницу "dist".Теперь, когда я нажимаю на его передаваемые параметры в url dist / 16783, но ничего не загружается

маршруты:

track.js

router.get('/', function(req, res, next) {
res.send('respond with a resource');

dist.js

var express = require('express');
var router = express.Router();
router.get('/', function (req, res, next) {
    res.render('dist.ejs');
});

router.get('/:awb', function (req, res, next) {
    res.render('dist.ejs', {
        AWB_NO: req.params.awb
    })
});

Новое обновление:

index.ejs

  <tr>
        <td class="id"><a href="/dist">1687952</a></td>
        <td>Tuna Fish</td>
        <td>DHL</td>
        <td>Germany</td>
      </tr>

index.js

router.get('/', function (req, res, next) {

    connection.query('SELECT * FROM orders', function (err, rows) {

        if (err) {
            req.flash('error', err);
            res.render('index', { page_title: "index - Node.js", data: '' });
        } else {

            res.render('index', { page_title: "index - Node.js", data: rows });

        }


    });
});

dist.ejs

<li class="list-inline-item">AWB Nummber:<%= AWB_NO %></li> &nbsp;

dist.js

router.get('/', function (req, res, next) {

    connection.query('SELECT * FROM deliveries', function (err, rows) {

        if (err) {
            req.flash('error', err);
            res.render('dist', { page_title: "dist - Node.js", data: '' });
        } else {

            res.render('dist', { page_title: "dist - Node.js", data: rows });

        }


    });
    router.get('/dist/:awb', function (req, res) {
        res.render('dist', {
            AWB_NO: req.params.awb
        })
    });
});

Ошибка:

ReferenceError: E:\Dev\admeghbalim\YinSeafood\YinSeafood\expressfirst\views\dist.ejs:20
    18|             <h3>Distributor information</h3><br>&nbsp;
    19|             <ul class="list-inline">
 >> 20|                 <li class="list-inline-item">AWB Nummber:<%= AWB_NO %></li> &nbsp;
    21|                 <li class="list-inline-item">Country:</li>&nbsp;
    22|                 <li class="list-inline-item">Date:</li>&nbsp;
    23|                 <li class="list-inline-item">Sender:</li>&nbsp;

AWB_NO is not defined

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, что маршрут здесь может быть относительно маршрута, который вы могли установить в конфигурации экспресс-базы.

Если у вас есть что-то подобное в вашем app.js

var express = require("express");

var app = express();
app.use('/dist', require("./routes/dist"));
//Set the view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

А у вашего dist.js есть маршрут

router.get('/dist/:awb', function (req, res, next) {
    res.render('dist', {
        AWB_NO: req.params.awb
    })
});

Ваш маршрут будет

localhost: 3000 / dist / dist / 16783

поскольку путь относительно вашего корневого пути в app.use.В этом случае ваш путь должен быть

router.get('/', function (req, res, next) {
    res.render('dist');
});

router.get('/:awb', function (req, res, next) {
    res.render('dist', {
        AWB_NO: req.params.awb
    })
});
...