2017-08-16 8 views
0

私はnode.jsプロジェクトでORMライブラリとしてsequelize(http://docs.sequelizejs.com/)を使用しています。Sequelize戻り値String型のカラム値をバッファ配列(MariaDB)

DBMSはMariaDB(10.1.13-MariaDB - MariaDBサーバ)である

問題は、すべてのVARCHARおよびCHAR型の列の値はバッファ配列として返します。 enter image description here

表の構造は次のとおりです。 enter image description here

モデルファイルは次のようになります。 enter image description here

私は何が間違っていたのか分かりません。

これは私が期待するものです。

"user_idは": "asdfff"

"EMAIL_ADDRESS": "[email protected]"

...

答えて

0

は、私はこの問題を自分で解決しました。 なぜこれが起こったのか分かりません。 MySQLデータベースに接続すると、StringがStringとして返されます。それは大丈夫と思われる。 しかし、私がマリアデータベースに接続しているときには、文字列はint配列として保持されます(intsはASCIIコードを表します)

私は数日間苦労しましたが、私はその点を理解できませんでした。 sequelizeのモジュールファイルを編集することにしました。

それは機能の

最後の部分 "instance.js/libにnode_modules/sequelize /" である "Instance.prototype.set =機能(キー、値、オプション..."、 私はいくつかの行を追加しましたコードの。

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; 

私はこれは良い解決策があるかわからないが、私の場合には、いずれかの問題は、これまで起こっていない。