使用 Express 后处理 Sequelize finders

Postprocess Sequelize finders with Express

我是 Javascript 的新手。 我正在开发一个 API 来从 MySQL 检索信息:

我基于 Sequelize 查找器(findByPk,通过主键检索信息)开发了以下控制器。有几个嵌套包含。

exports.findByPk = (req, res) => {
  Poi.findByPk(req.params.id,{
        attributes: [
            'name',
            'description'
        ],
        include: [{
            model: Source,
            attributes: ['originalId'],
            where: {source: 'google'}
        },{
            ...
        }]
    })
    .then(data => {
        res.send(data);
    })
};

据我所知,finder 输出一个相对复杂的 Sequelize 实例对象 data,它在 res.send 中传递(但是 API 可以访问适当的 Json).

我需要在将结果传递给 res.send 之前对 data 进行后处理:

如何从 data 中检索我需要的值?我应该把它当作一个常规的 javascript 对象,了解它的结构,然后手动检索我需要的值吗?或者有什么方法吗?

之后如何向data添加信息?我应该向 data 添加信息还是创建一个新对象?它应该是一个 Sequelize 对象还是可以是一个常规的 json-like javascript 对象?

非常感谢

您可以将 data(实际上是 Poi Sequelize 模型的一个实例)转换为普通 JS 对象,然后以常规方式使用它:

.then(data => {
  const plainObject = data.get({ plain: true });
  plainObject.newProp = 1
  // some work here including accessing Google API
  ...
  res.json(plainObject);