2017-10-14 8 views
0

現在、イベントを作成してmongoデータベースに保存しようとしています。以下は私の現在のイベントスキーマです。ここでNode.js mongoで関数を作成

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

//blueprint for each new entry in the db 
var eventSchema = new Schema({ 
    eventName: {type:String}, 
    eventDate: {type:String}, 
    eventPlace:{type:String}, 
    eventPrice: {type: Number} 

}); 
module.exports = mongoose.model('Event', eventSchema); 

// /route for new event 
    router.get('/newEvent', function (req,res,next) { 
     var messages = req.flash('error'); 
     res.render('user/newEvent',{csrfToken: req.csrfToken(),messages: messages, hasErrors: messages.length >0}); 
    }); 

    //route for new event save 
    router.get('/createEvent', function(req, res, next) { 

     var event = new Event(); 
     eventName = req.body.eventName; 
     eventDate = req.body.eventDate; 
     eventPlace = req.body.eventPlace; 
     eventPrice = req.body.eventPrice; 

     event.save(function(err) { 
     if(err) return next(err); 
     res.json({ message : 'Success!'}); 
     }); 
    }); 

そして、ここにファイル私のuser.jsの中で機能コードを作成している私のフォームは、私のnewEvent.hbsファイルに新しいイベントを作成することです。

これまでのところ、私は、コードを実行したとき、私は「必要:真の」削除したとき、私はeventNameの、eventPlace、EVENTDATEとeventPriceが必要とされており、入力されてhaventはというエラーを取得しますが、
<div class = "row"> 
      <div class="col-md-4 col-md-offset-4"> 
        <h1> Create a new Event</h1> 
       {{#if hasErrors}} 
        <div class=alert alert-danger"> 
         {{# each messages}} 
          <p>{{this}}</p> 
         {{/each}} 
        </div> 
       {{/if}} 

       <form action="/user/newEvent" method="post"> 
        <div class="form-group"> 
        <label for="eventName">Event Name</label> 
        <input type="text" id="eventName" name="eventName"class="form-control"> 
       </div> 

       <div class="form-group"> 
        <label for="eventDate">Event Date</label> 
        <input type="text" id="eventDate" name="eventDate" class="form-control"> 
       </div> 

       <div> 
        <label for="eventPlace">Place of Event</label> 
        <input type="text" id="eventPlace" name="eventPlace" class="form-control"> 
       </div> 

       <div> 
        <label for="eventPrice">Price of Event: €</label> 
        <input type="text" id="eventPrice" name="eventPrice" class="form-control"> 
       </div> 

       <input type="hidden" name="_csrf" value="{{ csrfToken}}"> 
       <a href="createEvent" class="pull-right btn btn-success" role="button">Create Event</a> 
      </form> 
    </div> 

イベントスキーマ新しいからのイベントは作成されますが、データはデータベースに保管されません。

答えて

0

1 - あなたは正しくeventName = req.body.eventName

イベントを保存していない現在、あなたは空のオブジェクトを保存している、あなたが必要な削除すると、それは空のデータを保存する理由thatsの。また、あなたはrouter.post

を使用する必要がありますGETリクエストでreq.bodyを使用している

2-

router.post('/createEvent', function(req, res, next) { 

    var event = new Event({ 
    eventName:req.body.eventName, 
    eventDate : req.body.eventDate, 
    eventPlace : req.body.eventPlace, 
    eventPrice : req.body.eventPrice 
    }); 

    event.save(function(err) { 
    if(err) return next(err); 
    res.json({ message : 'Success!'}); 
    }); 
}); 
+0

以下のコードを確認してくださいので、私はまだベント検証のエラーを取得に失敗しましたそのコードとイムを試してみました。 – Murf

+0

私はコードを編集してくださいこのコードを編集してみてくださいイベントの初期化でオブジェクトを渡しましたこれはうまくいくでしょう –

+0

イベントを作成するとエラーはなくなりますが、データはデータベースに保存されていません – Murf

関連する問題