我如何 return 来自我的 Express API 中的 mysql blob 字段的缓冲区中的字符串?

How do I return a string from a Buffer from a mysql blob field in my Express API?

我正在 Express 上构建 restful API 并使用 Sequelize。我的 mysql table 中有一个 Blob 字段,但在 get 响应中它是 return 一个 Buffer 对象。我应该如何 return 我的任何响应数据的 Buffer 对象属性的字符串值?

我将使用 API 和 PHP,但我正在使用 Postman 对其进行测试。

这是我的模型定义:

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

这是我的其中一条路线的示例:

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);
    });
});

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

buffer.toString('utf8')

但是如果您要 return 字符串数据,我想知道您为什么不简单地将字段存储为 Sequelize.STRING。如果 comments 是结构化数据,您可以考虑定义一个单独的 Comment 模型。如果您使用的是 Postgres,您还可以选择将 comments 定义为 array or as json.