如何从Express API中的mysql blob字段返回缓冲区中的字符串?

Bra*_*don 3 node.js express sequelize.js

我正在使用Sequelize在Express上构建一个安静的API.我的mysql表中有一个Blob字段,但在get响应中它返回一个Buffer对象.我应该如何返回任何响应数据属性的字符串值,这些属性是Buffer对象?

我将使用PHP来使用此API,但我正在使用Postman来测试它.

这是我的模型定义的样子:

module.exports = function (sequelize, DataTypes) {
  return sequelize.define('submissions', {
    comments: {
      type: DataTypes.BLOB,
      allowNull: true,
      defaultValue: ''
    },
    // Other fields...
  }, {tableName: 'submission', timestamps: false});
};
Run Code Online (Sandbox Code Playgroud)

这是我的一条路线的例子:

router.get('/:model', function(req, res) {
  var where = req.query;
    models[req.params.model].findAll({ where: where}).then(function(results){
        var status = models.utils._.isNull(results) ? 404 : 200;
        res.status(status).json(results);
    });
});
Run Code Online (Sandbox Code Playgroud)

And*_*ers 8

如果你的blob数据被编码为utf8字符串,你可以简单地这样做:

buffer.toString('utf8')
Run Code Online (Sandbox Code Playgroud)

但是如果你要返回字符串数据,我想知道为什么你不会简单地将字段存储为Sequelize.STRING.如果comments是结构化数据,您可以考虑定义单独的Comment模型.如果您正在使用Postgres,您还可以选择定义comments数组json.