現在、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の値が入っていれば、そこに表示されます。
ここで問題を明確にすることはできますか?私は困惑している。それはおそらく私が見落としたばかげたものです。