2016-11-29 3 views
2

Я кодирую простую регистрационную форму с использованием мангуста. У меня есть файл javascript для обработки значений регистрационной формы.Невозможно использовать модель мангуста

Вот мои registrationButtonAction.js

window.onload = function() { 

    var User = require('/models/Mongoose Database/user_database'); 
    // this line is causing the problem 


    var registerButton = document.getElementById("registerMe"); 
    var firstName = document.getElementById("firstName"); 
    var lastName = document.getElementById("lastName"); 
    var usernameRegister = document.getElementById("usernameRegister"); 
    var passwordRegister = document.getElementById("passwordRegister"); 
    var repasswordRegister = document.getElementById("repasswordRegister"); 


    registerButton.onclick = function() { 

     if(!firstName.value || !passwordRegister.value || !repasswordRegister.value || !usernameRegister.value){ 
      alert("Enter all required fields"); 
     }else if (passwordRegister.value != repasswordRegister.value){ 
      alert("Passwords must match"); 
     }else { 
      var newUser = new User({ 
         username : usernameRegister.value, 
         password : passwordRegister.value 
        }); 
       User.find({username:usernameRegister.value}, function (error, user) { 

         if (error) throw error; 

         if(user){ 
          window.location("/register"); 
         }else { 
          newUser.save(function (error) { 
           if(error) throw error; 
          }); 
          window.location("/login"); 
         } 
         // user.comparePassword(passwordRegister.value, function (error, isMatch) { 
         //  if (error) throw error; 
         // 
         //  return 1; 

         //}) 
       }); 

     } 

    } 


} 

Когда я Закомментируйте вар User = require('/models/Mongoose Database/user_database');, все чеки прекрасно работают в функции OnClick. Но когда я раскомментирую это, он не распознает нажатие кнопки.

Я хочу знать, является ли это правильным способом принимать значения со страницы регистрации и хранить их в базе данных мангуста.

+0

Вы не смешиваете серверный и клиентский коды? ваши модели не должны быть доступны для клиента. создайте REST API для изменения вашей серверной части сервера – xShirase

+0

@ num8er, мы все были новичками, ничего не смешно об этом – xShirase

+0

@xShirase благодарит за это. Поэтому я должен сначала узнать об апи. что-то вроде этого ? https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/ –

ответ

3

Вы смешиваете серверный и клиентский коды. Модели Mongoose и Node.js недоступны внутри window.onload на вашем клиенте.

Проще говоря, вам необходимо создать REST API для выполнения операций с базой данных на сервере. У вас есть все необходимые инструменты, просто нужно их переупорядочить.

поток будет как таковые:

  • получить значение, введенным в браузере
  • вызова конечной точки на сервере (например,/API/CreateUser)
  • в экспрессе-маршрутизаторе, есть маршрут называется/апи/CreateUser, в которой вы можете получить доступ к модели пользователя и выполнить создание/удаление/обновление и т.д.

Мое предложение было бы для вас, чтобы пройти через this tutorial WHI ch должен устранить вашу путаницу и быстро довести вас до скорости. Удачи!

Кроме того, Passport может помочь вам в аутентификации, но я считаю, что вам следует сначала изучить, как создать базовый API. Аутентификация - сложный зверь;)

+0

спасибо за руководство. Принимая ответ coz thats то, что я искал, способ выполнить все эти операции. –

Смежные вопросы