2016-08-21 2 views
0

Я новичок в создании api. Я пытаюсь создать запись в mongodb. Соединения с базой данных выполняются оперативно. Я написал код для ввода данных в базу данных 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. Поэтому, чтобы избавиться от ошибки MongoDB Promises, вы можете просто заменить обещания Монго на родные.

Чтобы сделать это, поместите следующую строку кода где-то между вашим require('mongoose') и mongoose.connect(MongoURI):

mongoose.Promise = global.Promise; 

Это просто перераспределяет встроенный в Монго Обещания библиотеку с родными обещаниями и должны избавиться от ошибки.

Смежные вопросы