Сохранить отмеченный Chechbox в базу данных sqlite с помощью JavaScript - PullRequest
0 голосов
/ 21 ноября 2018

У меня в ejs есть форма с несколькими флажками.В приложении пользователь должен иметь возможность выбирать свои интересы, установив флажки, и это должно быть сохранено в таблице базы данных sqlite.Я строю таблицу с помощью bootstrap:

db.exec('CREATE TABLE interests(interest text)');

(не уверен, какой тип выбрать, поэтому я установил для него «текст», но это, вероятно, неправильно?).Моя форма выглядит следующим образом

<form name="first_steps" action="first_steps" method="post">
  <ul>
    <li>
        <input type="checkbox" name="interesse" value="theater" id="check1">Theater</label>
    </li>
    <li>
        <input type="checkbox" name="interesse" value="musik" id="check2">Musik</label>
    </li>
    <li>
        <input type="checkbox" name="interesse" value="party" id="check3">Party</label>
    </li>
    <li>
        <input type="checkbox" name="interesse" value="sport" id="check4">Sport</label>
    </li>
</ul>
<input type="submit" value="submit">

Я нашел эту статью Флажки сохранения результатов, отмеченные в форме, в базу данных sqlite с помощью javascript и попытались преобразовать это в мой сервер.js

(что-то вроде этого

app.post('/first_steps', function(req, res) {
var elementen = document.getElementsByName ("interesse");
var tmpChoise;
for (var r= 0; r < elementen.length; r++) {
    if (elementen[r].checked) {
    tmpChoise = elementen[r].value;
    alert(tmpChoise);
    db.run(`INSERT INTO interessen(interesse) VALUES (?)`, [interesse], function(err) {
            return res.redirect('/profil');
        });
  }
 } 
});

, но это не сработает. Там написано "ReferenceError: документ не определен").

Может кто-нибудь сказать мне, какправильный код будет выглядеть?Я чертовски новичок и ничего не могу понять.

(Javascript, express, sqlite3, node.js)

1 Ответ

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

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

  1. Отображение формы интерфейса пользователя
  2. Публикация данных формы интерфейса на вашем сервере
  3. Управление или работа с данными на вашем сервере
  4. Отправьте некоторый ответ с вашего сервера обратно во внешний интерфейс.

В вашем случае, вместо того, чтобы пытаться смотреть на элементы DOM, которые могут появиться в результате document.getElementsByName ("interesse"), вы, вероятно, должны работать сданные хранятся в res.body.Так что это может выглядеть примерно так:

app.post('/first_steps', function(req, res) {
    data = req.body.interesse;
    db.run(`INSERT INTO interessen(interesse) VALUES (?)`, [data], function(err) {
            return res.redirect('/profil');
        });
  }
 } 
});

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

 var postBody = req.body;
 console.log(postBody);

(Этот вывод журнала консоли будетв каком терминале работает ваш экспресс сервер)

...