我目前正在使用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;"行。然后我通过架构将我的数据保存到我的数据库中。这样做,我的会话值不会传递到mongoose方案。它是空的。但是,当我在console.log中获取req.session值时,它在那里显示正常。
有人可以在这里澄清我的问题吗?我很难过。这可能是我所忽视的愚蠢行为。
答案 0 :(得分:0)
Welp,这是一个愚蠢的事情。 :)我正在使用邮递员将我的数据“POST”到页面。 Postman不知道会话值是什么,因此,没有数据发送到mongoose文档id。会话仅存储在服务器/浏览器端。经验教训,哈哈。