web-dev-qa-db-ja.com

Node.jsとMongoDBにユーザー登録する方法(mongooseとExpress.jsを使用)

あなたの助けが必要です。ユーザー登録フォームを作成してNodejs、Express.js、MongoDB(mongoose)を使用し、名前、メールアドレス、パスワード、携帯電話番号を使用してユーザー登録フォームを作成する非常に簡単な例を示します:)マングーススキーマを作成しました名前:req.body.nameのような値を指定しますが、機能しません:/私の意見では、何か悪いことをしました。

これは私のコードです。正しくないと思われる場合は、修正してください。 (私の悪い英語でごめんなさい)。これはserver.jsです

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/addressbookdb');
var express = require('express');
var app = express();
var db = mongoose.connection;

app.use(express.static(__dirname + '/../client'));

app.post("/",function(req,res){
    res.end("Registration Succesfully Completed!");

    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function (callback) {
        console.log("connected.")
    });

    // Schema
    var RegSchema = mongoose.Schema({
        Name: String,
        Email: String,
        Pass: String,
        Num: Number,
        reg_time : {
            type : Date, default: Date.now
        }
    }, { collection: 'AddressCol' });

    // Model
    var UserReg = mongoose.model('UserReg', RegSchema);

    // Add in collection
    var UserAdd = new UserReg({
        Name: req.body.name,
        Email: req.body.email,
        Pass: req.body.pass,
        Num: req.body.num,
    });

    // Save
    UserAdd.save(function (err, fluffy) {
        if (err) return console.error(err);
    });
});

app.listen(8000, function() {
  console.log("Server is running!");
});

これは私のHTMLページです:

<div class="form-group">
    <input type="text" class="form-control" id="name" placeholder="name><br>
    <input type="email" class="form-control" id="email" placeholder="Email"><br>
    <input type="password" class="form-control" id="pass" placeholder="Password"><br>
    <input type="number" class="form-control" id="num" placeholder="Number"><br>
    <button type="submit" class="btn btn-primary" id="reg-form-btn">Registration!</button>
</div>
<script>
    $(document).ready(function() {
        $("#reg-form-btn").click(function() {
            var name = $("#name").val();
            var email = $("#email").val();
            var pass = $("#pass").val();
            var num = $("#num").val();
            $.post("/", {
                Name: name,
                Email: email,
                Pass: pass,
                Num: num
            });
        });
    });
</script>
5
Vatex Official

たぶん、Passportまたは別のモジュールを検討する必要があります。しかし、あなたはこのようなことをすることができます:

app.post('/signup', function (req, res, next) {
    var user = {
       Name: req.body.name,
       Email: req.body.email,
       Pass: req.body.pass,
       Num: req.body.num
   };
   var UserReg = mongoose.model('UserReg', RegSchema);
   UserReg.create(user, function(err, newUser) {
      if(err) return next(err);
      req.session.user = email;
      return res.send('Logged In!');
   });
});

app.post('/login', function (req, res, next) {
   var email = req.body.email;
   var pass = req.body.pass;

   User.findOne({Email: email, Pass: pass}, function(err, user) {
      if(err) return next(err);
      if(!user) return res.send('Not logged in!');

      req.session.user = email;
      return res.send('Logged In!);
   });
});

app.get('/logout', function (req, res) {
   req.session.user = null;
});

次に、認証を処理するミドルウェアが必要です

function isLoggedIn (req, res, next) {
  if (!(req.session && req.session.user)) {
    return res.send('Not logged in!');
  }
  next();
}

そして私用ルートでそれを使用してください

app.get("/api", isLoggedIn, function (req, res) {
   //Something private
})
10

このチュートリアルを確認してください...必要に応じてAngularおよびmongojsを無視できます: http://www.phloxblog.in/single-page-application-angular-js-node -js-mongodb-mongojs-module /#。Vc20OXW1Gkq

0
Subham

あなたは行方不明ですbody-parser。サーバーコードでこれを試してください:

const bodyParser = require('body-parser');
app.use(bodyParser);

質問を参照してください Node.jsとExpressを使用してPOSTするときにリクエスト本文にアクセスする方法は?

0
Han

これが素晴らしいです チュートリアル 非常に便利なモジュールパスポートを使用して必要なものを作成する方法。また、Jadeテンプレートエンジンについても簡単に説明します。これは、expressアプリの作成についてさらに学習するのに役立ちます。

0