sql >> データベース >  >> NoSQL >> MongoDB

マングースでユニークな自動インクリメントフィールドを作成する

    const ModelIncrementSchema = new Schema({
        model: { type: String, required: true, index: { unique: true } },
        idx: { type: Number, default: 0 }
    });
    
    ModelIncrementSchema.statics.getNextId = async function(modelName, callback) {
        let incr = await this.findOne({ model: modelName });
    
        if (!incr) incr = await new this({ model: modelName }).save();
        incr.idx++;
        incr.save();
        return incr.idx;
    };
    
    
    const PageSchema = new Schema({
        id: { type: Number ,  default: 0},
        title: { type: String },
        description: { type: String }
    });
    
    
    PageSchema.pre('save', async function(next) {
        if (this.isNew) {
            const id = await ModelIncrement.getNextId('Page');
            this.id = id; // Incremented
            next();
        } else {
            next();
        }
    });
    


    1. Sidekiqの労働条件

    2. マングースをアトラスに接続できない

    3. MongoDB $ max

    4. Windows764ビットxamppのphpredis