UNPKG

@dashersw/mongoose-id-autoinc

Version:

Creating of auto increment id fields

72 lines (43 loc) 1.89 kB
mongoose-id-autoinc ==================== mongoose的一个plugin,用来解决使用mongoose时mongodb的_id自增问题,摆脱一堆对人类不友好的_id字段。 自增字段名可以自定义。 ## 依赖 - [Node.js](http://nodejs.org/) - [MongoDB](http://www.mongodb.org) - [Mongoose](http://mongoosejs.com) ##原理参照 MongoDB的官方文档 [Create an Auto-Incrementing Sequence Field](http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/) 采用的是方法一,在数据库中新建了一个counter计数的collection,记录每个model的大id,然后在save时赋值。 使用findAndModify实现递增,由于$inc是原子操作,所以不用担心并发。 ## 安装 通过npm npm install mongoose-id-autoinc ## 选项 - `model` - Mongoose model的名字,必须的选项 - `field` - 自增字段的名,默认为_id - `start` - 自增的初始值,默认1 - `step` - 自增的步长,默认1 ## 使用 例子代码: $ node examples/example.js 1.在项目里require mongoose以及插件 var mongoose = require('mongoose'), Schema = mongoose.Schema, db = mongoose.createConnection('127.0.0.1', 'yourDatabaseName'), autoinc = require('mongoose-id-autoinc'); 2.初始化插件,然后定义你自己的表结构,在和插件关联上 autoinc.init(db); //可以指定counter名称,init(db,countername) var UserSchema = new Schema({ name: String, email: String }); UserSchema.plugin(autoinc.plugin, { model: 'User' }); 3.然后就可以创建自己的model,它的_id就会自增(123...) var User = db.model('User', UserSchema); 4.可选字段 UserSchema.plugin(autoinc.plugin, { model: 'User', field: 'seqnumber', start: 100, step: 10 }); --------------------------------------- #### ©MarioDu 2013-4-14