2017-03-24 16 views
0

現在、Node/Express/MongoDBを使用しているプロジェクトで作業しています。私はMongooseを使用して、スキーマとDBとのインターフェースを作成しています。私は "express-sessions"モジュールを使用しており、セッション値を設定しています。具体的には、 "req.session.user"はログイン時のユーザ名と同じです。ノード/エクスプレスセッション値の挿入

ここで私の質問は、セッション値をmongodbに挿入する方法ですか?私のモデルは適切に定義されています。

doc_type.model.js定義ルートと

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

var TypesSchema = new Schema({ 
    type_id: { 
    type: String, 
    uppercase: true, 
    required: true 
    }, 
    type_description: { 
    type: String, 
    required: true 
    }, 
    created_by: { 
    type: String, 
    required: false 
    }, 
    creation_date: { 
    type: Date, 
    default: Date.now 
    } 
}); 

module.exports = mongoose.model('document_types', TypesSchema); 

admin.js。

adminRouter.route('/doc_types') 

.get((req, res) => { 
    Type.find({}, (err, types) => { 
    if (err) { 
     console.error(err) 
     res.json(err) 
    } 
    else if (!req.session.user || !req.session.badge) { 
     res.redirect('/login'); 
    } 
    else if (req.session.user || req.session.badge) { 
     res.render('doc_types', { pageTitle: 'Document Types', types: types, currentUser: req.session.user }) 

    } 
    }) 
}) 

.post((req, res) => { 
    var type = new Type(); 

    type.type_id = req.body.input_type_id; 
    type.type_description = req.body.input_type_description; 
    type.created_by = req.session.user; 

    type.save((err) => { 
    if (err) { 
     console.error(err) 
     res.json(err) 
    } 
    else { 
     res.json("Success!"); 
    } 
    }) 
}); 

あなたは.post法の下で見ると、あなたがライン "type.created_by = req.session.user;" を気づくでしょう。私はスキーマを介して私のDBに私のデータを保存します。その際、私のセッション値はマングーススキームに渡されません。空っぽです。しかし、console.logにreq.sessionの値が入っていれば、そこに表示されます。

ここで問題を明確にすることはできますか?私は困惑している。それはおそらく私が見落としたばかげたものです。

答えて

0

Welp、それは何か愚かだった。 :)私は郵便配達員を使って私のデータをページに "POST"していました。郵便配達員は、セッションの値が何であるか分かりません。従って、mongoose文書IDに送信されるデータはありません。セッションはサーバー/ブラウザ側にのみ保存されていました。レッスンは学んだ、ハハ。