2014-10-03 2 views
0

У меня есть приложение node.js с подключением к удаленному серверу mongoDB. База данных содержит некоторые пользовательские коды, которые были предварительно созданы и распространены среди определенных пользователей. Идея состоит в том, что только тем, кто вводит один из таких кодов в форму на индексной странице, может быть разрешено просматривать остальную часть сайта. То есть, я хочу перекрестно ссылаться на код, введенный с главным списком, хранящимся в моей базе данных.Node.js, MongoDB Форма входа

Это пример того, что я пытаюсь сделать (обратите внимание на это в маршрутах/index.js):

collection.findOne({ "Code": "fooCode" }, function(err, doc){ 
    if you cannot find fooCode 
     show an error message, clear the input area and tell the user to re-enter a correct code 

    if you find fooCode 
     redirect to a new page; 
}); 

Вышеприведенный код находится в router.post («/», функция (req, res) {...}) функция.

Мой вопрос: как очистить область ввода текста (без обновления страницы) и попросить пользователя повторно ввести новый код при вводе неправильного кода?

Во-вторых, как перенаправить пользователя на новую страницу при действительном вводе кода? Благодарю.

+0

Почему вы не пытаетесь сделать аякс-вызов? какой клиент вы используете в своем интерфейсе? –

ответ

0
  1. Для такого рода поведения вы должны были бы отправить форму с помощью XHR, разобрать ответ (JSON), а затем снимите форму на ошибки и ошибки отображения информации. На стороне сервера вы можете просто сделать что-то вроде res.json({ status: 'success' }); или res.json({ status: 'error', error: 'Bad token' });

  2. Об успеха, вы можете сделать перенаправление в браузере через window.location.replace("http://example.org/foo"); или если вы хотите текущую страницу в истории сеанса (например, достижимую с задней кнопкой браузера) вы можете использовать window.location.href = "http://example.org/foo".

0
  1. Чтобы очистить вход: Я хотел бы справиться с этим на переднем конце, так что каждый раз кнопка нажата (для отправки формы) она очищает вход с:

    <input id="userInput" type="text"> <button id="submitBtn">Send</button>

Тогда в сценарии:

// Cache DOM 
const myInput = document.getElementById('userInput'); 
const myBtn = document.getElementById('submitBtn'); 

// Event Bind 
myBtn.on('click', clearInput); 

// Functions 
function clearInput() { 
    myInput.value = '';  
} 

2. Для перенаправления пользователя на новую страницу

res.redirect('/<path>'); 

Вы можете сделать следующее в маршрутах для перенаправления пользователя на главном маршрут.

collection.findOne({ "Code": "fooCode" }, function(err, doc){ 

    if err throw err 

    else {  
     res.redirect('/'); 
    } 
})