[英]Rename Object Keys from Snake Case to Camel Case Recursively Without Using Lodash
[英]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.