[MONGODB] 문자열이 MongoDB를 OBJECTID 경우 내가 확인할 수 있습니까?
MONGODB문자열이 MongoDB를 OBJECTID 경우 내가 확인할 수 있습니까?
나는 BSON 문자열을 변환하여 MongoDB를 조회를하고있는 중이 야. 내가 가지고있는 문자열이 변환을 수행하기 전에 몽고에 대한 유효한 OBJECTID 경우 나 결정하기위한 방법이 있습니까?
여기에 내 현재 findById 메소드 기능에 대한 커피 스크립트입니다. 그것은 잘 작동하지만 문자열이 ID없는 결정하면 나는 다른 속성으로 조회하고 싶습니다.
db.collection "pages", (err, collection) ->
collection.findOne
_id: new BSON.ObjectID(id)
, (err, item) ->
if item
res.send item
else
res.send 404
해결법
-
==============================
1.나는 몽구스 ObjectId가 유효성 검사기가 유효하며 Object를 확인하기 위해 노력하고 있음을 발견하지만 유효하지 않은 ID가 유효한 것으로 간주 된 몇 가지 경우를 발견했다. (예 : 모든 12 자 문자열)
나는 몽구스 ObjectId가 유효성 검사기가 유효하며 Object를 확인하기 위해 노력하고 있음을 발견하지만 유효하지 않은 ID가 유효한 것으로 간주 된 몇 가지 경우를 발견했다. (예 : 모든 12 자 문자열)
var ObjectId = require('mongoose').Types.ObjectId; ObjectId.isValid('microsoft123'); //true ObjectId.isValid('timtomtamted'); //true ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
내게는 OBJECTID 문자열을 캐스팅 한 후 원래의 문자열이 OBJECTID의 문자열 값과 일치하는지 확인한다 무엇을 일하고있다.
new ObjectId('timtamtomted'); //616273656e6365576f726b73 new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
ObjectId가 있지만, OBJECTID에 캐스트 할 때 잘못된 유효한 의지의 변화를 유도 할 수있는 문자열로 주조 할 때이 작품은 유효 ID는 변경되지 않기 때문에.
-
==============================
2.당신은 그것을 위해 테스트하는 정규 표현식을 사용할 수 있습니다 :
당신은 그것을 위해 테스트하는 정규 표현식을 사용할 수 있습니다 :
커피 스크립트
if id.match /^[0-9a-fA-F]{24}$/ # it's an ObjectID else # nope
자바 스크립트
if (id.match(/^[0-9a-fA-F]{24}$/)) { // it's an ObjectID } else { // nope }
-
==============================
3.나는 과거에이 작업을 수행 할 기본 노드 MongoDB의 드라이버를 사용했다. 값이 유효한 BSON ObjectId가 있다는 isValid 검사 방법. 여기에 설명서를 참조하십시오.
나는 과거에이 작업을 수행 할 기본 노드 MongoDB의 드라이버를 사용했다. 값이 유효한 BSON ObjectId가 있다는 isValid 검사 방법. 여기에 설명서를 참조하십시오.
var ObjectID = require('mongodb').ObjectID; console.log( ObjectID.isValid(12345) );
-
==============================
4.여기에 내가 앤디 - MacLeod 씨의 대답 @ 기반으로 작성한 일부 코드입니다.
여기에 내가 앤디 - MacLeod 씨의 대답 @ 기반으로 작성한 일부 코드입니다.
전달 된 값이 유효 또는 null의 경우는 무효 인 경우는 int 형 또는 문자열 또는 ObjectId가 반환 유효한 ObjectId가 하나를 사용할 수 있습니다 :
var ObjectId= require('mongoose').Types.ObjectId; function toObjectId(id) { var stringId = id.toString().toLowerCase(); if (!ObjectId.isValid(stringId)) { return null; } var result = new ObjectId(stringId); if (result.toString() != stringId) { return null; } return result; }
-
==============================
5.문자열이 12 문자가 포함 된 경우 mongoose.Types.ObjectId.isValid (문자열)은 항상 True를 반환
문자열이 12 문자가 포함 된 경우 mongoose.Types.ObjectId.isValid (문자열)은 항상 True를 반환
let firstUserID = '5b360fdea392d731829ded18'; let secondUserID = 'aaaaaaaaaaaa'; console.log(mongoose.Types.ObjectId.isValid(firstUserID)); // true console.log(mongoose.Types.ObjectId.isValid(secondUserID)); // true let checkForValidMongoDbID = new RegExp("^[0-9a-fA-F]{24}$"); console.log(checkForValidMongoDbID.test(firstUserID)); // true console.log(checkForValidMongoDbID.test(secondUserID)); // false
-
==============================
6.당신이 16 진수 문자열이있는 경우이를 사용할 수 있습니다 :
당신이 16 진수 문자열이있는 경우이를 사용할 수 있습니다 :
ObjectId.isValid(ObjectId.createFromHexString(hexId));
-
==============================
7.그것은 자신의 캐릭터에 Express.js 서버를 충돌했다와 ObjectId가 값을 비교하는 @Andy 마크 셀로드에 의해 제안 된 것과 같은 유효한 해결책을 얻기 위해 나에게 동안을했다 :
그것은 자신의 캐릭터에 Express.js 서버를 충돌했다와 ObjectId가 값을 비교하는 @Andy 마크 셀로드에 의해 제안 된 것과 같은 유효한 해결책을 얻기 위해 나에게 동안을했다 :
var view_task_id_temp=new mongodb.ObjectID("invalid_id_string"); //this crashed
난 그냥이 문제를 해결하는 간단한 시도 캐치를 사용했다.
var mongodb = require('mongodb'); var id_error=false; try{ var x=new mongodb.ObjectID("57d9a8b310b45a383a74df93"); console.log("x="+JSON.stringify(x)); }catch(err){ console.log("error="+err); id_error=true; } if(id_error==false){ // Do stuff here }
-
==============================
8.OBJECTID이 유효한지 아닌지 몽구스를 들어, 사용 isValid () 함수는 확인
OBJECTID이 유효한지 아닌지 몽구스를 들어, 사용 isValid () 함수는 확인
예 :
var ObjectId = mongoose.Types.ObjectId; if(ObjectId.isValid(req.params.documentId)){ console.log('Object id is valid'); }else{ console.log('Invalid Object id'); }
-
==============================
9.제가 발견하는 방법은 내가 입력 출력과 같은 경우, 검사 할 새로운 값을 ObjectId가 작성하는 ID는 유효 :
제가 발견하는 방법은 내가 입력 출력과 같은 경우, 검사 할 새로운 값을 ObjectId가 작성하는 ID는 유효 :
function validate(id) { var valid = false; try { if(id == new mongoose.Types.ObjectId(""+id)) valid = true; } catch(e) { valid = false; } return valid; } > validate(null) false > validate(20) false > validate("abcdef") false > validate("5ad72b594c897c7c38b2bf71") true
-
==============================
10.가장 쉬운 방법은 기본적으로 시도 및 캐치 서비스에 ObjectId가 방법을 포장한다. 그럼 당신은 대신 직접 방법을 사용하는 Objecet 아이디의를 처리하기 위해이 서비스를 사용하고 있습니다 :
가장 쉬운 방법은 기본적으로 시도 및 캐치 서비스에 ObjectId가 방법을 포장한다. 그럼 당신은 대신 직접 방법을 사용하는 Objecet 아이디의를 처리하기 위해이 서비스를 사용하고 있습니다 :
var ObjectId = REQUIRE OR IMPORT ... // service function oid(str) { try { return ObjectId(str); } catch(err) { return false; } } // usage if (oid(USER_INPUT)) { // continue } else { // throw error }
또한 새로 생성 된 ID를 얻기 위해 null 또는 빈 소품을 보낼 수 있습니다.
-
==============================
11.경고 : isValid가 유효한 16 진수로 시작하는 임의의 12/24 길이 문자열에 대해 true를 반환합니다. 현재 내가이 더 나은 체크 생각 :
경고 : isValid가 유효한 16 진수로 시작하는 임의의 12/24 길이 문자열에 대해 true를 반환합니다. 현재 내가이 더 나은 체크 생각 :
from https://stackoverflow.com/questions/13850819/can-i-determine-if-a-string-is-a-mongodb-objectid by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 BsonDocument로 변환 문자열 (0) | 2019.12.14 |
---|---|
[MONGODB] 'MongoDB를 3.0에서 링크 해제 소켓 파일 "오류로 실패 (0) | 2019.12.14 |
[MONGODB] MongoDB의에서 ISODate 포맷 (0) | 2019.12.13 |
[MONGODB] 어떻게 같은 성명을 채우고 집계를 사용 하는가? (0) | 2019.12.13 |
[MONGODB] mongod를 사용하여 UTC에 날짜를 저장할 때 어떻게 시간대의 문제를 다루는? (0) | 2019.12.13 |