【发布时间】:2017-03-27 23:45:40
【问题描述】:
我目前正在使用 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;”行。然后我通过模式将数据保存到我的数据库中。这样做后,我的会话值不会传递到猫鼬方案中。它是空的。但是,当我 console.log 的 req.session 值时,它在那里显示得很好。
有人可以在这里澄清我的问题吗?我难住了。这可能是我忽略了一些愚蠢的事情。
【问题讨论】:
标签: javascript node.js mongodb express