Sequelize在JS中使用camel case,但在表名中使用了下划线

fut*_*pal 30 sequelize.js

是否可以强调列名称(postgres),但每个语言标准的JavaScript getter是否为camelCase?

Mic*_*sen 37

对于后来发现它的人来说,现在可以明确地定义数据库字段应该命名的内容:

var User = sequelize.define('user', {
  isAdmin: {
    type: DataTypes.BOOLEAN,
    field: 'is_admin'
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 应该强调:true`和`underscoredAll:true`选项会自动将camelCased模型的属性名称转换为数据库请求时的下划线?我的意思是,在Model中我们定义为`activationKey:DataTypes.STRING`,但对db的请求将是`SELECT ..."activation_key"...`? (5认同)
  • @MickHansen有没有计划支持这个? (4认同)

Seb*_*rin 11

2019+

在 Sequelize v5 中,您现在可以使用该underscored: true属性


const User = sequelize.define('User', {
    username: DataTypes.STRING,
    password: DataTypes.STRING
  }, {underscored: true});
Run Code Online (Sandbox Code Playgroud)

https://sequelize.org/master/class/lib/model.js~Model.html#static-method-init


Jan*_*ier 2

不直接在列定义中,但您可以查看 getter 和 setter:

http://sequelizejs.com/documentation#models-getters---setters-defining-as-part-of-the-model-options

尽管此选项要求您手动为每个列定义 getter 和 setter,但它无法自动化。此外,您的 getter 和实际的列名称都将在对象上可用。

我认为 github 上此功能有问题,但我现在找不到它


实际链接 https://sequelize.org/master/manual/models-definition.html#getters--amp--setters

  • @futbolpal 现在可以为属性定义一个字段,因此您可以执行类似 `userId: {type: DataTypes.INTEGER, field: 'user_id'}` 的操作 (3认同)