Отправлять данные, которые я получаю от E JS, на другой NodeJs Script (NodeJs express) - PullRequest
0 голосов
/ 02 августа 2020

Это мой индекс. js файл

const ig = require('./like');

const iglike = async() => {

   await ig.initialize();

   await ig.login('example', 'examplepass');

   await ig.liketagsprocess(***tags***);

   debugger;

};

module.exports = iglike;

Это мой контроллер. js (маршрут)

control.get('/like', (req, res) => {
    res.render("like");
    
});

control.post('/like', (req, res, next) => {
     let tags = req.body.likes;
     console.log(tags);
     const likeobj = require('./bin/index')(like);
     res.send(likeobj.iglike);
     next();
     res.send(tags);
     
});

Это моя форма для получения данных [EJS ]

<% (tag = ['']) %>
<form action="/like" method="POST">
    <% for (var i in tag){%>
        Tag: <input type="text" name="likes" value="<%= tag[i].likes %>"/><br><br>
        <button type="submit" value="accept">Send Tag</button><br><br><hr>
    <%} %>
</form>

Я учусь в старшей школе и создаю свое первое веб-приложение на Node express. Извините за плохое объяснение.

Что мне нужно сделать, так это заставить форму принимать массив от пользователя и отправлять его в индекс. js в разделе «теги».

С помощью этого кода я могу принять только одну строку и распечатать ее в моей консоли.

Когда я go на localhost / like

Форма отображает и после ввода данных печатает их в консоли и выполняет мой код в индексе . js

Я не могу передать свои данные, которые печатаются в консоль в мой index. js file.

Я получаю эту ошибку

(node:7140) UnhandledPromiseRejectionWarning: ReferenceError: tags is not defined

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 02 августа 2020

Здесь нужно изменить несколько вещей:

В вашем файле index. js добавьте параметр к вашей функции:

const ig = require('./like');

const iglike = async (tags) => { // < here

  await ig.initialize();

  await ig.login('example', 'examplepass');

  await ig.liketagsprocess(tags);

  debugger;

};

module.exports = iglike;

В вашем контроллере. js вы можете импортировать свою функцию iglike вверху файла и использовать ее в своем маршруте, передав теги в качестве параметра:

const iglike = require('./bin/index');

control.get('/like', (req, res) => {
  res.render("like");
});

control.post('/like', (req, res, next) => {
  let tags = req.body.likes;
  console.log(tags);
  iglike(tags);
  next();
  res.send(tags);
});

В вашем файле e js вы должны изменить имя ввода на likes[] так что это может быть массив:

<% (tag = ['']) %>
<form action="/like" method="POST">
    <% for (var i in tag){%>
        Tag: <input type="text" name="likes[]" value="<%= tag[i].likes %>"/><br><br>
        <button type="submit" value="accept">Send Tag</button><br><br><hr>
    <%} %>
</form>
...