在MongoDB中保存多个集合的问题

时间:2017-01-26 17:20:52

标签: node.js mongodb

我有两个架构设置为:

 var mongoSchema =   mongoose.Schema;
// create schema
var UserSchema = new mongoSchema({
  name: {
      type: String,
      unique: true,
      required: true
    },
  password: {
      type: String,
      required: true
    },
    LockID: {
      type: String,
      required: false
    },
      firstname: {
      type: String,
    },
      updated: {
      type: Date,
      default: Date.now
      }
});

var LockLogSchema = new mongoSchema({
  lockTime: {
    type: String,
  },
  updated: {
    type: Date,
    default: Date.now
   },
    name: {
    type: String,
    required : true
  },  
    location:{
    type: String
  }
});
module.exports = mongoose.model('Logs',LockLogSchema);
module.exports = mongoose.model('userLogin',UserSchema);

然而,当我尝试保存到' Logs'请求失败,但我可以保存到' userLogin'精细。

我的保存方法是:

router.post('/unLock', function(req, res) {
    var now = moment().toDate();
    var db = new mongoOp({
                    name: req.body.name,
                    lockTime: now
                });
                // save the user
                console.log('create new user: ' + db);
                db.save(function(err) {
                    if (err) {
                        return res.status(500).json({
                            success: false,
                        });
                      }
                        else
                        {
                          return res.status(500).json({
                              success: true,
                          });
                       }
                });
}

通过HTTP POST调用。

我认为问题在于将两个模型导出到module.exports。但是,如果我不这样做,我如何使用路由器POST方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

我设法自己解决这个问题。

我正在错误地使用module.exports,因为这是用第二个声明覆盖导出。

这是应该如何设置的:

var Logs = mongoose.model('Logs', LockLogSchema);
var userLogin = mongoose.model('userLogin', UserSchema);

module.exports = {
    Logs: Logs,
    userLogin: userLogin
};

然后可以像这样访问模式:

    var mongoOp = require("../model/mongo");
    mongoOp.userLogin.findOne({});    //to find something 
    var db = new mongoOp.userLogin({});   //for saving