每个独特价值的猫鼬自动增量计数器

时间:2017-11-13 23:40:47

标签: node.js mongodb mongoose

我有两个模型,实体和帖子,我试图在每个唯一实体的帖子上创建一个自动递增的计数器:

//entity
var entitySchema = mongoose.Schema({
    name: String,
    counter: Number,
});

//post
var postSchema = mongoose.Schema({
    test: String,
    entity: {
        type: Schema.Types.ObjectId,
        ref: 'entity'
    },
    ticketNumber: Number //this needs to auto increment starting at zero PER user, so entity A has a 1+, entity 2 has a 1+, etc
});

我可以在实体上有一个序列,每次创建帖子并使用它时都要检查它,但这可能有重复。

我发现了一篇帖子,建议在帖子上保存一个“保存”,但这对每个实体来说都不是唯一的,只是整体上是唯一的。

任何方法可以让这个工作在模型本身上/更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用名为mongoose-auto-increment的npm包。

您的连接看起来像这样:

    var autoIncrement = require('mongoose-auto-increment');

    var connection = mongoose.connect('YOUR CONNECTION');

    autoIncrement.initialize(connection);

你的架构看起来像这样:

    var postSchema = mongoose.Schema({
        test: String,
        entity: {
            type: Schema.Types.ObjectId,
            ref: 'entity'
        },
        ticketNumber: Number
    });

    postSchema.plugin(autoIncrement.plugin, { model: 'NAME YOUR MODEL', field: 'ticketNumber', startAt: 0, incrementBy: 1 });