自动增量不会在mongoose中返回id

时间:2014-12-17 12:04:42

标签: javascript node.js mongodb

我想在添加新文档时增加id。但是当我使用下面的代码时,fieldnum和_id都没有自动递增。我找不到fieldnum。我知道这是一个蹩脚的问题,但有人可以帮我解决这个问题吗?

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 个答案:

答案 0 :(得分: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来电,只有在保存对象后才能记录对象。