无法将模型添加到mongo数据库。

时间:2016-08-21 05:37:06

标签: javascript node.js mongodb crud

我是api创作的新手。我试图创建一个mongodb的入口。数据库连接迅速进行。我已经编写了以下代码,用于将数据输入到mongo DB中。

// Node Module dependencies
var express = require('express');
var router = express.Router();

// Local Module dependencies
var common = require('./common.js');
//var request = require('request');

//common.autoIncrement.initialize(common.conn);

//---------------Schema Definitions---------------------//
var userSchema = common.Schema({

    _id: common.Schema.Types.ObjectId,
    user_name: String,
    gender: {
        type: String,
        enum: ['male', 'female'],
        default: 'male'
    },
    contact: Number,
    profile_pic: String,
    address: String,
    role: String,
    dob: {
        type: Date,
        default: Date.now
    },
    collage_name: String,
    course: String,
    college_roll: String,
    specialization: String

});

var User = common.conn.model('User', userSchema);

router.route('/')
    .post(function (req, res, next) {
        console.log(req.body);

        var item = new User(req.body);

        //========calling postModel method===============

        postUser(item, function (result) {

            res.send(result);
        });
   });
module.exports = router;
//========postModel method============//
function postUser(item, fn) {
    item.save(function (err) {

        if (err) console.log(err);
        console.log('user:', item);
        fn(item);
   })
}

但问题是数据库没有得到更新,我找不到错误是什么。这是我尝试使用邮递员将一些数据放入数据库时​​获得的输出。

 db connection established to medicoshere database 
    { dob: '2016-08-21T02:37:11.969Z',
      gender: 'male',
      user_name: 'ria nivas' }
    Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in      your own promise library instead: http://mongoosejs.com/docs/promises.html
    [Error: document must have an _id before saving]
    user: { user_name: 'ria nivas',
      dob: Sun Aug 21 2016 08:07:11 GMT+0530 (IST),
      gender: 'male' }
    POST /register 200 67.420 ms - 74 

但是我看到没有内容更新到我的数据库。输出的第一行是使用

记录的
app.db.once('open', function () {
    console.log('db connection established to medicoshere database ');

我还需要做些什么才能更新我的数据库。 感谢。

1 个答案:

答案 0 :(得分:0)

由于您收到Mongoose: mpromise等错误,我假设您使用的是最新版本的NodeJS,这意味着您可以使用ES2015原生Promise。因此,要摆脱MongoDB Promises错误,您只需将Mongo的承诺替换为原生承诺即可。

要执行此操作,请将以下代码行放在require('mongoose')mongoose.connect(MongoURI)之间的某处:

mongoose.Promise = global.Promise;

这只是简单地用内置的promises重新分配内置的Mongo Promises库,并且应该摆脱你的错误。