2017-08-16 35 views
0

我在我的node.js項目中使用sequelize(http://docs.sequelizejs.com/)作爲ORM庫。Sequelize返回字符串類型列值作爲緩衝區數組(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數據庫,字符串返回字符串。看起來沒問題。 但只有當我連接到瑪麗亞數據庫,字符串retured爲Int數組(int表示ASCII碼字符)

我一直在掙扎幾天,但我無法弄清楚這一點。 所以我決定編輯一個sequelize的模塊文件。

據 「node_modules/sequelize/lib目錄/ instance.js」

功能 「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; 

我不知道這是很好的解決方案,但在我的情況下,任何問題至今沒有happend。

相關問題