关于节点包'squelize','dataValues'是什么意思?

时间:2017-06-26 05:46:24

标签: node.js sequelize.js koa2

我的问题是:

koa2中间件'/info' ctx.res.body ------>front-end get对象没有dataValues和其他值。只有{a:1,b:2}

之类的对象

在中间件中我得到ser它有很多关键值,如{dataValue:{a:1,b:2},eviousDataValues:'xxx'}

为什么前端对象与ko2中间件中的'ser'不一样?

这是我的代码

let sequelize = new Sequelize('test', sqlOpt.name, sqlOpt.pwd, {
host: sqlOpt.host,
dialect: 'mysql',
port: sqlOpt.port,
pool: {
max: 5000,
min: 0,
idle: 10000
}})
let api = sequelize.define(
'api', {
  id: {
    type: Sequelize.STRING,
    primaryKey: true
  },
  name: Sequelize.STRING,
  method: Sequelize.STRING,
  url: Sequelize.STRING,
  description: Sequelize.STRING,
  createTime: Sequelize.INTEGER,
  did: Sequelize.STRING,
  status: Sequelize.INTEGER,
  content_type: Sequelize.INTEGER
}, {
  freezeTableName: true,
  tableName: 'apilist',
  timestamps: false
})
module.exports = {
searchbyDid(params) {
  return api.findAll({
  where: {
    did: params.id
  }
})}}

router.get('/info', async ctx => {
  let ser = await ser_m.searchAll()
  for (let val of ser) {
    val.dataValues.item = await api_m.searchbyDid({
      id: val.id
    })
  }
  ctx.response.body = ser
})

1 个答案:

答案 0 :(得分:2)

Sequelize的回复始终是一个模型实例,这是一种形式。

{
  dataValues: [//All your data],
  previousDataValues: [//Old Values],
  ... //many more properties
}

如果您不需要该实例,只需要数据。您可以在查询中提供raw:true的其他标记。文档可用here

这样做

Model.A.findAll({where:{/*Some Conditions*/},raw:true})

将仅将数据作为普通JS对象返回。