繁体   English   中英

Sequelize在结果对象中混合驼峰和蛇形键

[英]Sequelize mixes camel case and snake case keys in result object

我试图从Sequelize create(或任何Sequelize查询)中获得最终的纯对象,使其始终成为蛇格键。 但是结果对象是混合的。 这是一个示例查询:

const object = await models.Account.create({
  userId,
  name,
  accountNumber
})

console.log(object.get({ plain: true }))

结果对象是骆驼箱和蛇箱的混合键:

{
    "id": 2,
    "userId": 1,
    "name": "baller",
    "accountNumber": "1234-123-1234",
    "updated_at": "2019-01-07T02:23:41.305Z",
    "created_at": "2019-01-07T02:23:41.305Z",
    "balance": "0.00",
    "deleted_at": null
}

知道如何将结果纯对象或嵌套对象完全设为蛇格键吗? 将package.json中的sequelize从^ 4.42.0升级到^ 5.0.0-beta,并且两者都发生。 不知道还有什么尝试?

Accounts表是所有蛇形案例列名称:

return queryInterface.createTable('accounts', {
  id: {
    allowNull: false,
    autoIncrement: true,
    primaryKey: true,
    type: Sequelize.INTEGER
  },
  user_id: {
    allowNull: false,
    type: Sequelize.INTEGER,
    references: {
      model: 'users',
      key: 'id'
    }
  },
  name: {
    allowNull: false,
    type: Sequelize.STRING(50)
  },
  account_number: {
    allowNull: false,
    type: Sequelize.STRING(50)
  },

帐户模型具有强调的选项:true和camelCase attrs(在蛇案中带有字段)

const Account = sequelize.define('Account', {
  userId: {
    type: DataTypes.INTEGER,
    field: 'user_id',
    allowNull: false,
    validate: {
      notNull(value) {
        if (value == null) {
          throw new Error('Missing user id')
        }
      }
    }
  },
  name: {
    type: DataTypes.STRING,
    field: 'name',
    validate: {
      notEmpty: true
    }
  },
  accountNumber: {
    type: DataTypes.STRING,
    field: 'account_number',
    validate: {
      notEmpty: true
    }
  },
}, {
  tableName: 'accounts',
  paranoid: true,
  underscored: true
})

现在,我用以下方法解决它:

import snakeCaseKeys from 'snakecase-keys'

let jsonObject = object.get({ plain: true })
jsonObject = snakeCaseKeys(jsonObject)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM