복붙노트

[MONGODB] 몽구스 독특한 자동 증가 필드 만들기

MONGODB

몽구스 독특한 자동 증가 필드 만들기

스키마를 감안할 때 :

var EventSchema = new Schema({
    id: {
        // ...
    },
    name: {
        type: String
    },
});

나는 ID가 독특하고 자동 증가 만들고 싶어. 나는 MongoDB의 구현을 실현하기 위해 노력하지만, 바로 몽구스에서 작업을 수행하는 방법을 이해하는 문제가있다.

내 질문은 :에있는 모든 플러그인 등을 사용하지 않고 몽구스의 자동 증가 필드를 구현하는 올바른 방법은 무엇입니까?

해결법

  1. ==============================

    1.여기에 몽구스를 사용하여 자동 증가 필드 구현의 좋은 예이다 :

    여기에 몽구스를 사용하여 자동 증가 필드 구현의 좋은 예이다 :

    var CounterSchema = Schema({
        _id: {type: String, required: true},
        seq: { type: Number, default: 0 }
    });
    var counter = mongoose.model('counter', CounterSchema);
    
    var entitySchema = mongoose.Schema({
        testvalue: {type: String}
    });
    
    entitySchema.pre('save', function(next) {
        var doc = this;
        counter.findByIdAndUpdate({_id: 'entityId'}, {$inc: { seq: 1} }, function(error, counter)   {
            if(error)
                return next(error);
            doc.testvalue = counter.seq;
            next();
        });
    });
    

    당신은 첫째로 MongoDB의 문서에서 1 단계를 수행해야합니다.

  2. ==============================

    2.당신은이를 사용할 수 있습니다. 이 패키지마다이 고유 한 값을 생성합니다.

    당신은이를 사용할 수 있습니다. 이 패키지마다이 고유 한 값을 생성합니다.

    패키지 이름 : uniqid

    링크 : https://www.npmjs.com/package/uniqid

  3. ==============================

    3.네, 여기에 기능의 "마른 체형은"입니다.

    네, 여기에 기능의 "마른 체형은"입니다.

    당신은 당신의 몽고 데이터베이스에서 해당 모음이 필요합니다. 당신이 원하는 경우에 그것은 진리의 동시 키 할당 단일 레코드 역할을합니다. 다음 키를 얻기 위해 "원자"작업을 수행하고 심지어 당신이 충돌하지 않고 반환 된 고유 키를 보장됩니다 동시 요청이 있음을 확인하는 방법 몽고의 예를 보여줍니다.

    그러나, MongoDB를가 기본적으로 그 메커니즘을 구현하지 않습니다, 그들은 그것을 어떻게하는 방법을 보여줍니다. _id가 고유의 문서 키로서 사용하는 그들은 단지 제공합니다. 나는 이것이 당신의 접근 방식을 명확히 바랍니다.

    아이디어를 확장하려면, 가서 정의 된 몽구스 모델이 몽고 제안 구현을 추가하고 당신은 이미 짐작으로, 그것을 사용하는 사전 저장 당신이 작업하는 경우 당신은 항상 ID를 생성 할 수 있도록하는 이벤트 또는 더 나은 아직 사전 초기화 수집 서버 측 당신이 몽고에 저장하기 전에.

  4. ==============================

    4.다른 방법은 몽구스에 의해 주어진 외부 패키지를 사용할 수 있습니다.

    다른 방법은 몽구스에 의해 주어진 외부 패키지를 사용할 수 있습니다.

    몽구스 순서 플러그인

    몽구스 자동 증가 플러그인

  5. ==============================

    5.위의 모든를 무시합니다. 여기에서, 용액은

    위의 모든를 무시합니다. 여기에서, 용액은

    YourModelname.find().count(function(err, count){
       req["body"].yourID= count + 1;
          YourModelname.create(req.body, function (err, post) {
            if (err) return next(err);
            res.json(req.body);
          });
        });
    
  6. from https://stackoverflow.com/questions/23199482/create-unique-autoincrement-field-with-mongoose by cc-by-sa and MIT license