Skip to content

Latest commit

 

History

History
91 lines (63 loc) · 2.45 KB

1912 mongodb 3.2에서 aggregate($lookup) 사용시 objectid가 uint8array 형식으로 리턴되는 issue.md

File metadata and controls

91 lines (63 loc) · 2.45 KB

Issue: mongodb 3.2에서 aggregate($lookup) 사용시 objectid가 uint8array 형식으로 리턴되는 issue

상황:

aggregate에서 $lookup 사용 상황에서 objectid로 db에 존재하는 필드가 uint8array 형식으로 리턴되는 상황

사례1 사례2


생각해낸 방안:

  • mongodb의 toString 함수 사용
  • uint8array decode, encode
  • bytes 배열을 hex string으로 변환

방안: mongodb의 toString 함수 사용 (실패)


mongodb 4.0에서 지원하는 toString 함수를 project혹은 group에서 함께 사용하면 금방 끝났을텐데... product는 3.2이고... 다음주 내로 ..무조건.. 올린다..




    참조:
    https://stackoverflow.com/questions/16478552/convert-objectid-mongodb-to-string-in-javascript
    https://docs.mongodb.com/manual/reference/operator/aggregation/toString/

방안: uint8array decode, encode (실패)


utf-8로 incoded 된 bytes의 형태가 나와서 encoding을 하면 될 줄 알았는데 이상한 문자가 나왔다.




    참조:
    https://stackoverflow.com/questions/14603205/how-to-convert-hex-string-into-a-bytes-array-and-a-bytes-array-in-the-hex-strin
    https://ourcodeworld.com/articles/read/164/how-to-convert-an-uint8array-to-string-in-javascript
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array

방안: uint8array decode, encodebytes 배열을 hex string으로 변환 (성공)


// Convert a byte array to a hex string

function bytesToHex(bytes) {
    for (var hex = [], i = 0; i < bytes.length; i++) {
        var current = bytes[i] < 0 ? bytes[i] + 256 : bytes[i];
        hex.push((current >>> 4).toString(16));
        hex.push((current & 0xF).toString(16));
    }

    return hex.join("");
}



    참조:
    https://stackoverflow.com/questions/14603205/how-to-convert-hex-string-into-a-bytes-array-and-a-bytes-array-in-the-hex-strin