2014-12-17 3 views
0

Я хотел увеличивать идентификатор всякий раз, когда добавляется новый документ. Но когда я использую следующий код, ни fieldnum, ни _id не автоинкремент. И я не мог найти fieldnum. Я знаю, что это хронический вопрос, но может ли кто-нибудь помочь мне в этом?auto-increment doesnt возвращает id в mongoose

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    pureautoinc = require('mongoose-pureautoinc'); 
var connection = mongoose.createConnection("mongodb://localhost/myDatabase"); 
pureautoinc.init(connection); 
var bookSchema = new Schema({ 
    title: String, 
    genre: String, 
    publishDate: Date 
}); 
bookSchema.plugin(pureautoinc.plugin,{model : 'Book',field :'fieldnum'}); 
var Book = connection.model('Book',bookSchema); 
var book1 = new Book({title : "goutham", genre : "comedy", publishDate : new Date()}); 
book1.save(); 
var book2 = new Book({title : "goutham1", genre : "comedy", publishDate : new Date()}); 
book2.save(); 
console.log(book1,book2); 

ответ

1

Это создает fieldnum atrribute, и это также автоинкрементом его. Если вы проверите сохраненные объекты через консоль mongodb, вызывая db.books.find(), вы увидите, что этот атрибут был создан.

Проблема в коде заключается в том, что вы не передаете обратный вызов на вызовы save, поэтому вы вызываете console.log(book1, book2), прежде чем они вернутся. То, что вы должны сделали, чтобы увидеть сохраненные объекты:

var logIfSaved = function (error, doc) { 
    if (error) throw Error(error); 
    console.log(doc); 
}; 

var book1 = new Book({title : "goutham", genre : "comedy", publishDate : new Date()}); 
book1.save(logIfSaved); 
var book2 = new Book({title : "goutham1", genre : "comedy", publishDate : new Date()}); 
book2.save(logIfSaved); 

Теперь, проходя обратный вызов вашего save звонков, вы будете регистрировать объекты только после того, как они сохранены.

+0

Спасибо за помощь приятеля. Это сработало –

+0

Nice. Теперь вам нужно только отметить ответ, как принято. –

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