【问题标题】:about node package 'squelize',what is 'dataValues' 's mean?关于节点包'sequelize','data Values'是什么意思?
【发布时间】:2017-06-28 00:49:32
【问题描述】:

我的问题是:

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

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

ko2中间件中为什么前端Object和'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
})

【问题讨论】:

    标签: node.js sequelize.js koa2


    【解决方案1】:

    Sequelize 的响应总是一个模型实例,它的形式是。

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

    如果您不需要实例,而只需要数据。您可以在查询中提供一个附加标志 raw:true。文档可用here

    这样做

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

    只会将数据作为纯 JS 对象返回。

    【讨论】:

    • 您可以将其标记为已回答的其他人在这里绊倒
    • 我检查了 Sequelize instance.__proto__ ,我找到了一个函数,一个 toJSON 函数的名称,它返回一个对象,JSON.stringfy() 是找到这个对象然后重新运行这个对象,不要返回JSON.stringfy(mydata),兄弟,这是我问题的关键,谢谢
    猜你喜欢
    • 2016-08-08
    • 2019-01-01
    • 2015-04-11
    • 2023-03-06
    • 2020-06-10
    • 1970-01-01
    • 2016-10-24
    • 2016-08-17
    • 2018-07-17
    相关资源
    最近更新 更多