2016-11-29 20 views
2

私はmongooseを使用して簡単な登録フォームをコーディングしています。 私は、登録フォームの値を処理するためにjavascriptファイルを使用しています。私はVAR User = require('/models/Mongoose Database/user_database');は、すべてのチェックがonclickの関数内正常に動作しているときに、コメントmongooseモデルを使用できません

は、ここに私の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; 

         //}) 
       }); 

     } 

    } 


} 

です。しかしコメントを外すと、ボタンのクリックを認識していません。

これは、登録ページから値を取得し、それらをmongooseデータベースに保存する正しい方法かどうかを知りたいと思います。

+0

あなたはサーバーとクライアントのコードを混在させていませんか?あなたのモデルはクライアントからアクセスできないようにすべきです。あなたのdbサーバー側を変更するためのREST APIを作成してください – xShirase

+0

@ num8er私たちはすべて初心者でしたが、それについては笑わないでください – xShirase

+0

@xShiraseはそれを指摘してくれてありがとうございます。だから私は最初にapiを作ることについて学ばなければならない。このようなもの ? –

答えて

3

サーバーコードとクライアントコードが混在しています。 MongooseモデルとNode.js関数は、クライアントのwindow.onloadの中ではアクセスできません。

単純に言えば、サーバーでデータベース操作を実行するためのREST APIを作成する必要があります。あなたはすべての正しいツールを持っています、ただそれらを並べ替える必要があります。

流れは以下のような次のようになります。

  • 値が明示ルータに(例/ API /のcreateUser用)ブラウザ
  • コールサーバー上のエンドポイント
  • で入力します、していますあなたはUserモデルにアクセスして、作成/削除/更新を行うことが可能な/ API /のcreateUserと呼ばれるルートなど

あなたはthis tutorial WHIを通過するために私の提案は次のようになりますchはあなたの混乱を取り除き、すぐにあなたをスピードアップさせるべきです。がんばろう!

また、Passportは認証に役立ちますが、まず基本的なAPIを構築する方法を学ぶ必要があります。認証は難しい獣です;)

+0

ガイダンスのおかげで、答えを受け入れることができました。私が探していたもの、すべての操作を実行する方法です。 –

関連する問題