2016-08-21 66 views
0

我是api創作的新手。 Iam試圖創建一個mongodb的入口。數據庫連接即時完成。我寫了下面的代碼來輸入數據到mongo數據庫中。無法將模型添加到mongo數據庫。

// 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 

,但我看不出有任何內容更新到輸出的我db.The第一線使用

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

未登錄的狀態還有什麼我需要做更新我的數據庫。 謝謝。

+1

我認爲你不需要在你的模型中聲明_id。如果你添加它,你應該自己生成它。看看這個:http://stackoverflow.com/questions/25345274/mongoose-data-saving-without-id – kakashi

+0

感謝它的工作.....我還有一個問題....如何避免此警告.. 。Mongoose:mpromise(mongoose的默認承諾庫)已被棄用,請插入自己的承諾庫:http://mongoosejs.com/docs/promises.html –

+1

您可以使用@Aron提及的方式。 'mongoose.Promise = global.Promise'就夠了。 – kakashi

回答

0

既然你得到了Mongoose: mpromise etc錯誤,我假設你使用的是最新版本的NodeJS,這意味着你可以使用ES2015原生Promise。因此,要擺脫MongoDB Promises錯誤,您可以簡單地將Mongo的承諾替換爲本地的承諾。

爲此把下面的代碼行的地方你require('mongoose')mongoose.connect(MongoURI)之間:

mongoose.Promise = global.Promise; 

這只是重新分配與本土承諾內置的蒙戈少輝庫,並應擺脫你的錯誤。