gpt4 book ai didi

javascript - Sequelize 在结果对象中混合了 Camel 大小写和蛇形大小写键

转载 作者:行者123 更新时间:2023-11-30 06:19:26 24 4
gpt4 key购买 nike

我正在尝试从 Sequelize create(或任何 Sequelize 查询)中获取生成的普通对象,使其始终成为 snake case 键。然而,结果对象是混合的。这是一个示例查询:

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 表是所有 snake case 列名:

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 with field in snake case

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)

关于javascript - Sequelize 在结果对象中混合了 Camel 大小写和蛇形大小写键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54068019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com