source

반환 문자열 유형 열 값을 버퍼 배열(MariaDB)로 후속 처리

ittop 2023. 8. 5. 10:58
반응형

반환 문자열 유형 열 값을 버퍼 배열(MariaDB)로 후속 처리

저는 sufficialize(http://docs.sequelizejs.com/) 를 제 node.js 프로젝트에서 ORM 라이브러리로 사용하고 있습니다.

DBMS는 MariaDB(10.1.13-MariaDB - MariaDB Server)입니다.

문제는 모든 VARCHAR 및 CHAR 유형 열 값이 버퍼 배열로 반환된다는 것입니다.

테이블 구조는 다음과 같습니다.

모델 파일은 다음과 같습니다.

제가 뭘 잘못했는지 모르겠어요.

이것이 제가 기대하는 것입니다.

"user_id" : "tftfff"

"email_address" : "asdf@asdf.com "

...

이 문제는 제가 직접 해결했습니다.왜 이런 일이 일어났는지 모르겠어요.MySQL 데이터베이스에 연결하면 String이 String으로 반환됩니다.괜찮아 보입니다.그러나 Maria Database에 연결할 때만 String이 Int Array(ints는 ASCII 문자 코드를 나타냄)로 검색되었습니다.

며칠 동안 고생을 했지만 요점을 알 수가 없었어요.그래서 저는 속편의 모듈 파일 중 하나를 편집하기로 결정했습니다.

"node_modules/sequelize/lib/instance.js"입니다.

"Instance.prototype" 함수의 마지막 부분.set = function(키, 값, 옵션...)", 코드를 몇 줄 추가했습니다.

    if (!options.raw && ((!Utils.isPrimitive(value) && value !== null) || value !== originalValue)) {
      this._previousDataValues[key] = originalValue;
      this.changed(key, true);
    }

    // HACK : This part for byte array to string of MariaDB
    if (Buffer.isBuffer(value)) {
        value = value.toString('utf8');
    }

    this.dataValues[key] = value;

이것이 좋은 해결책인지는 잘 모르겠지만, 저의 경우에는 지금까지 문제가 발생하지 않았습니다.

언급URL : https://stackoverflow.com/questions/45707605/sequelize-return-string-type-column-value-as-buffer-array-mariadb

반응형