每当添加新文档时,我都想增加ID。但是当我使用以下代码时,fieldnum和_id都不是自动递增的,而且我找不到fieldnum。我知道这是一个la脚的问题,但是有人可以帮我吗?

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);

最佳答案

它正在创建fieldnum特技,并且还会对其进行自动递增。如果通过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调用,您将仅在对象保存后记录它们。

关于javascript - 自动递增不会以 Mongoose 返回ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27525225/

10-10 23:22