@dashersw/mongoose-id-autoinc
Version:
Creating of auto increment id fields
72 lines (43 loc) • 1.89 kB
Markdown
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就会自增(1,2,3...)
var User = db.model('User', UserSchema);
4.可选字段
UserSchema.plugin(autoinc.plugin, { model: 'User', field: 'seqnumber', start: 100, step: 10 });
---------------------------------------
#### ©MarioDu 2013-4-14