javascript - Sequelize 在结果对象中混合了驼峰格和蛇格键
问题描述
我试图从 Sequelize create (或任何 Sequelize 查询)中获取生成的普通对象作为蛇形案例键。然而,结果对象是混合的。这是一个示例查询:
const object = await models.Account.create({
userId,
name,
accountNumber
})
console.log(object.get({ plain: true }))
结果对象是camel case和snake case的混合键:
{
"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 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)
推荐阅读
- c# - 当角色面向左右时翻转 2D 子弹精灵
- javascript - 不使用哈希表的重复问题
- rancher - 用于 Azure CLI 的 YAML
- python - 从文件夹中获取特定文件并将它们保存在列表中
- javascript - 函数不会改变变量 - NodeJs
- php - 使用 xdebug 调试到 prestashop 使用 vscode 编辑器
- kotlin - http4k 路由文档
- ios - Firestore addSnapshot 在后端更改数据时创建多个副本
- mongodb - 根据喜好使用 User 和 Post MongoDB 模型生成排行榜
- node.js - 尽管我定义了 cors“Access-Control-Allow-Origin”并将其设置为值“*”,但为什么我得到了 CORS 来源