我在我的node.js项目中使用sequelize(http://docs.sequelizejs.com/)作为ORM库。
DBMS是MariaDB(10.1.13-MariaDB-MariaDB Server)
问题是,所有VARCHAR和CHAR类型的列值都作为缓冲区数组返回。
我不知道我做错了什么。
这就是我的期望。
“user_id”:“asdfff”
“email_address”:“asdf@asdf.com”
...
答案 0 :(得分:0)
我几天都在挣扎,但我无法弄清楚这一点。 所以我决定编辑一个sequelize的模块文件。
它是" node_modules / sequelize / lib / instance.js"
函数的最后一部分" Instance.prototype.set = function(key,value,options ...", 我添加了几行代码。
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;
我不确定这是不是很好的解决方案,但就我而言,到目前为止还没有发生任何问题。