节点/快速会话值插入

时间:2017-03-24 02:32:45

标签: javascript node.js mongodb express

我目前正在使用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值时,它在那里显示正常。

有人可以在这里澄清我的问题吗?我很难过。这可能是我所忽视的愚蠢行为。

1 个答案:

答案 0 :(得分:0)

Welp,这是一个愚蠢的事情。 :)我正在使用邮递员将我的数据“POST”到页面。 Postman不知道会话值是什么,因此,没有数据发送到mongoose文档id。会话仅存储在服务器/浏览器端。经验教训,哈哈。