Socket
Socket
Sign inDemoInstall

@dashersw/mongoose-id-autoinc

Package Overview
Dependencies
233
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @dashersw/mongoose-id-autoinc

Creating of auto increment id fields


Version published
Weekly downloads
6
Maintainers
1
Created
Weekly downloads
 

Readme

Source

mongoose-id-autoinc

mongoose的一个plugin,用来解决使用mongoose时mongodb的_id自增问题,摆脱一堆对人类不友好的_id字段。 自增字段名可以自定义。

依赖

  • Node.js
  • MongoDB
  • Mongoose

##原理参照

MongoDB的官方文档

Create an Auto-Incrementing Sequence 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

Keywords

FAQs

Last updated on 29 Sep 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc