使用 Express 后处理 Sequelize finders
Postprocess Sequelize finders with Express
我是 Javascript 的新手。
我正在开发一个 API 来从 MySQL 检索信息:
- Node.js
- 快递
- 续集
我基于 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
字段从 Google API 中检索信息,并将此信息添加到 API 输出
- 我需要根据
data
字段计算一些值,并将这些值添加到 API 输出(长话短说,它不能成为 Sequelize 查询的一部分,因为已知Sequelize 中的问题)
如何从 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);
我是 Javascript 的新手。 我正在开发一个 API 来从 MySQL 检索信息:
- Node.js
- 快递
- 续集
我基于 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
字段从 Google API 中检索信息,并将此信息添加到 API 输出 - 我需要根据
data
字段计算一些值,并将这些值添加到 API 输出(长话短说,它不能成为 Sequelize 查询的一部分,因为已知Sequelize 中的问题)
如何从 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);