복붙노트

[MONGODB] MongoDB의 노드 체크 OBJECTID이 유효한 경우

MONGODB

MongoDB의 노드 체크 OBJECTID이 유효한 경우

OBJECTID는 노드의 드라이버를 사용하여 유효한지 여부를 어떻게 확인할 수 있습니다

나는 시도했다 :

var BSON = mongo.BSONPure;
console.log("Validity: "  + BSON.ObjectID.isValid('ddsd'))

하지만 대신 참 또는 거짓의 예외를 점점 계속. (예외 그냥 '던져 전자; // process.nextTick 오류, 또는'입니다 오류 '첫 번째 틱에서 이벤트'

해결법

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

    1.isValid () 함수에서 유래하지만이 노드 MongoDB를 네이티브에없는 경우 확실하지.

    isValid () 함수에서 유래하지만이 노드 MongoDB를 네이티브에없는 경우 확실하지.

    당신이 24 진수 문자열을 확인하려면이 정규 표현식을 사용할 수 있습니다.

    var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$");
    

    github.com/mongodb/js-bson/.../objectid.js에서 촬영

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

    2.isValid ()는 노드 MongoDB의 모국어에 의존성 인 JS-bson 라이브러리이다.

    isValid ()는 노드 MongoDB의 모국어에 의존성 인 JS-bson 라이브러리이다.

    누구든지이 질문을 발견, 나는 다른 답변에 추천으로이 방법을 다시하지 않는 것이 좋습니다. 대신 다음 예는 JS-bson에서 isValid () 메소드에 액세스, 노드 MongoDB를 네이티브 원래의 포스터처럼 사용되었다 계속 사용.

    var mongodb = require("mongodb"),
        objectid = mongodb.BSONPure.ObjectID;
    
    console.log(objectid.isValid('53fbf4615c3b9f41c381b6a3'));
    

    2018년 7월 업데이트 :이 작업을 수행하는 현재의 방법은 다음과 같습니다

    var mongodb = require("mongodb")
    console.log(mongodb.ObjectID.isValid(id))
    
  3. ==============================

    3.2.0 Joes의 대답에 먹기의 확장으로 ...이에서 유효 노드 MongoDB의 네이티브

    2.0 Joes의 대답에 먹기의 확장으로 ...이에서 유효 노드 MongoDB의 네이티브

    var objectID = require('mongodb').ObjectID
    
    objectID.isValid('54edb381a13ec9142b9bb3537') - false
    objectID.isValid('54edb381a13ec9142b9bb353') - true
    objectID.isValid('54edb381a13ec9142b9bb35') - false
    
  4. ==============================

    4.GianPaJ의 조각은 훌륭하지만의 ObjectId가 아닌 진수를 충당하기 위해 약간 확장 될 필요가있다 @. 같은 파일의 라인 (32)을 나타냅니다 objectID에의도의 길이는 12 자입니다. 이 키는 MongoDB를 드라이버에 의해 24 자리 16 진수 OBJECTID로 변환됩니다.

    GianPaJ의 조각은 훌륭하지만의 ObjectId가 아닌 진수를 충당하기 위해 약간 확장 될 필요가있다 @. 같은 파일의 라인 (32)을 나타냅니다 objectID에의도의 길이는 12 자입니다. 이 키는 MongoDB를 드라이버에 의해 24 자리 16 진수 OBJECTID로 변환됩니다.

    function isValidObjectID(str) {
      // coerce to string so the function can be generically used to test both strings and native objectIds created by the driver
      str = str + '';
      var len = str.length, valid = false;
      if (len == 12 || len == 24) {
        valid = /^[0-9a-fA-F]+$/.test(str);
      }
      return valid;
    }
    
  5. ==============================

    5.나는 거기에 이미 OBJECTID 문자열을 확인하기 위해 논리와 같은 isValid 메소드를 노출하는 JS-bson 라이브러리에 풀 요청을했다 제출했다.

    나는 거기에 이미 OBJECTID 문자열을 확인하기 위해 논리와 같은 isValid 메소드를 노출하는 JS-bson 라이브러리에 풀 요청을했다 제출했다.

  6. ==============================

    6.당신은 몽구스를 사용하는 경우에 당신은 오히려 다른 라이브러리에 따라보다 검증에 몽구스를 사용할 수 있습니다.

    당신은 몽구스를 사용하는 경우에 당신은 오히려 다른 라이브러리에 따라보다 검증에 몽구스를 사용할 수 있습니다.

    if (!mongoose.Types.ObjectId.isValid(req.id)) {
        return res.status(400).send("Invalid object id");
    }
    
  7. ==============================

    7.아래는 내가 JOI 사용 형 OBJECTID 데이터이며, 검증 대상 ID에 노력하고 내 모델 (Joi.objectId을 ()가 필요합니다 ().)

    아래는 내가 JOI 사용 형 OBJECTID 데이터이며, 검증 대상 ID에 노력하고 내 모델 (Joi.objectId을 ()가 필요합니다 ().)

    const Joi = require('joi');
    const mongoose = require('mongoose');
    
    const Category = mongoose.model('Category', new mongoose.Schema({
    name: {
        type: String,
        minlength: 5,
        maxlength: 50,
        required: true
    },
    thumbnail: {
        type: String,
        minlength: 5,
        maxlength: 255,
        required: true
    },
    subject_id: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Subject',
        required: true
    },
    timestamp: {
        type: Date,
        required: true,
        default: Date.now
    }
    }));
    
    function validateCategory(category) {
    const schema = {
        name: Joi.string().min(5).max(50).required(),
        subject_id: Joi.objectId().required(),
    };
    
    return Joi.validate(category, schema);
    }
    
    exports.Category = Category;
    exports.validate = validateCategory;
    

    값은 길이가 24 자 영숫자 문자열입니다 JOI-OBJECTID의 유효성을 검사합니다.

    MongoDB의는 조이에 대한 검증을 OBJECTID.

  8. ==============================

    8.당신은 서버러스를 사용하여 검증 및 ObjectId가에 사용자 정의 함수를 만들 수 있습니다

    당신은 서버러스를 사용하여 검증 및 ObjectId가에 사용자 정의 함수를 만들 수 있습니다

    from cerberus import Validator
    import re
    
    class CustomValidator(Validator): 
        def _validate_type_objectid(self, field, value):
            """ 
            Validation for `objectid` schema attribute.
    
            :param field: field name.
            :param value: field value.
            """
            if not re.match('[a-f0-9]{24}', str(value)):
                self._error(field, ERROR_BAD_TYPE % 'ObjectId')
    
    ## Initiate the class and validate the information
    v = CustomValidator()
    
    schema = {
        'value': {'type': 'objectid'}
    }
    document = {
        'value': ObjectId('5565d8adba02d54a4a78be95')
    }
    
    if not v(document, schema):
        print 'Error'
    
  9. from https://stackoverflow.com/questions/11985228/mongodb-node-check-if-objectid-is-valid by cc-by-sa and MIT license