Функция не вызывается в узлах J с использованием REST API - PullRequest
0 голосов
/ 18 ноября 2018

Я пишу код в Node JS, который использует усы для шаблонов HTML и REST API в качестве бэкэнда.

Вот мой код, который не работает.

function setupRoutes(app) {
 const base = app.locals.base;

app.get(`${base}/search.html`,doSearchContent(app));   
app.get(`${base}/:name`,doGetContent(app));     
}

function doSearchContent(app) {
  return async function(req, res) {
    console.log("here");
  }; };

Когда я запускаю свою программу и захожу в base / search.html.Он никогда не вызывает метод doSearchContent.

Есть идеи, почему и как я могу это исправить?

РЕДАКТИРОВАТЬ: doGetContent работает, как ожидалось.Это когда я запускаю search.html, он не

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Эти строки

app.get(`${base}/search.html`,doSearchContent(app));   
app.get(`${base}/:name`,doGetContent(app)); 

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

app.get(`${base}/search.html`,(req, res) => {
    console.log("It's alive!");
    doSearchContent(app);
});   
app.get(`${base}/:name`, (req, res) => { 
    doGetContent(app)
}); 

Скоростные пути должны начинаться с косой черты.

Это не правда

0 голосов
/ 20 ноября 2018

Вы добавили файл search.html или использовали шаблон для построения HTML?

Убедитесь, что вызывается шаблон, а не файл html.

Кроме того, ваш код выглядит нормально, и он должен работать

0 голосов
/ 18 ноября 2018

Экспресс-пути должны начинаться с косой черты.Пожалуйста, измените дополнение маршрутов на что-то вроде этого:

...
app.get(`/${base}/search.html`,doSearchContent(app));   
app.get(`/${base}/:name`,doGetContent(app));
...

Express сопоставляет путь HTTP-запроса с «путем», предоставленным для всех маршрутов, чтобы решить, какие маршруты должны быть вызваны.Поскольку пути http всегда начинаются с косой черты, ваши маршруты также должны указывать те, которые должны совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...