Model definition - 模型定义

要定义模型和表之间的映射,请使用 define 方法. 每列必须具有数据类型,请参阅 [datatypes][1] 的更多信息.

  1. class Project extends Model {}
  2. Project.init({
  3. title: Sequelize.STRING,
  4. description: Sequelize.TEXT
  5. }, { sequelize, modelName: 'project' });
  6. class Task extends Model {}
  7. Task.init({
  8. title: Sequelize.STRING,
  9. description: Sequelize.TEXT,
  10. deadline: Sequelize.DATE
  11. }, { sequelize, modelName: 'task' })

除了[datatypes][1],你可以在每列上设置很多参数.

  1. class Foo extends Model {}
  2. Foo.init({
  3. // 如果未赋值,则自动设置值为 TRUE
  4. flag: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: true},
  5. // 设置默认时间为当前时间
  6. myDate: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
  7. // 将allowNull设置为false会将NOT NULL添加到列中,
  8. // 这意味着当列为空时执行查询时将从DB抛出错误.
  9. // 如果要在查询DB之前检查值不为空,请查看下面的验证部分.
  10. title: { type: Sequelize.STRING, allowNull: false},
  11. // 创建具有相同值的两个对象将抛出一个错误. 唯一属性可以是布尔值或字符串.
  12. // 如果为多个列提供相同的字符串,则它们将形成复合唯一键.
  13. uniqueOne: { type: Sequelize.STRING, unique: 'compositeIndex'},
  14. uniqueTwo: { type: Sequelize.INTEGER, unique: 'compositeIndex'},
  15. // unique属性用来创建一个唯一约束.
  16. someUnique: {type: Sequelize.STRING, unique: true},
  17. // 这与在模型选项中创建索引完全相同.
  18. {someUnique: {type: Sequelize.STRING}},
  19. {indexes: [{unique: true, fields: ['someUnique']}]},
  20. // primaryKey用于定义主键.
  21. identifier: { type: Sequelize.STRING, primaryKey: true},
  22. // autoIncrement可用于创建自增的整数列
  23. incrementMe: { type: Sequelize.INTEGER, autoIncrement: true },
  24. // 你可以通过'field'属性指定自定义列名称:
  25. fieldWithUnderscores: { type: Sequelize.STRING, field: 'field_with_underscores' },
  26. // 这可以创建一个外键:
  27. bar_id: {
  28. type: Sequelize.INTEGER,
  29. references: {
  30. // 这是引用另一个模型
  31. model: Bar,
  32. // 这是引用模型的列名称
  33. key: 'id',
  34. // 这声明什么时候检查外键约束. 仅限PostgreSQL.
  35. deferrable: Sequelize.Deferrable.INITIALLY_IMMEDIATE
  36. }
  37. },
  38. // 仅可以为 MySQL,PostgreSQL 和 MSSQL 的列添加注释
  39. commentMe: {
  40. type: Sequelize.INTEGER,
  41. comment: '这是一个包含注释的列名'
  42. }
  43. }, {
  44. sequelize,
  45. modelName: 'foo'
  46. });

注释选项也可以在表上使用, 查看 [model configuration][0].