更改Sequelize默认列名

6

我正在使用Nodejs和Sequelize。这是我的用户模型的结构:

"use strict";

module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define('user', { 
    first_name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    last_name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    email: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
      validate: {
        isUnique: function (email, done) {
            User.find({ where: { email: email }})
                .done(function (err, user) {
                    if (err) {
                        done(err);
                    }
                    if (user) {
                        done(new Error('Email already registered'));
                    }
                    done();
                });
        }
    }
    },
    profile_image_path: {
      type: DataTypes.STRING,
      allowNull: true,
    },
    active_flag: {
      type: DataTypes.BOOLEAN,
      allowNull: true,
      defaultValue: true
    },
    delete_flag: {
      type: DataTypes.BOOLEAN,
      allowNull: true,
      defaultValue: false
    }
  }, {
    classMethods: {
      associate: function(models) {
        User.hasMany(models.account),
        User.hasMany(models.user_has_contact)
      }
    }
  });
  return User;
};

默认情况下会创建3列:

  • id
  • createdAt
  • updatedAt

我不想使用 createdAtupdatedAt 这种格式,我想要的是 created_atupdated_at。如何更改这些默认列名?

我有另一个表格 user_has_contact,它具有以下关系:

{
    classMethods: {
      associate: function(models) {
        UserHasContact.belongsTo(models.user)
      }
    }
  }

它会自动创建userId字段,但我想将其更改为user_id。欢迎提出任何建议!
3个回答

20

您可以通过在配置中添加以下设置来全局执行此操作:

 var config=  {
     "define": {
          "underscored": true
        }
    }

  var Sequelize = require("sequelize");
  var sequelize = new Sequelize(database, username, password, config);

14

如果我使用 foreignKey: 'user_id',我是否也需要创建 user_id 列? - Manwal
只要你让 Sequelize 创建表 (sequelize.sync),就不需要手动创建表了。 - Jan Aagaard Meier

0
     var config=  {
     "define": {
          "underscored": true
        }
    }
var Sequelize = require("sequelize");
var sequelize = new Sequelize(database, username, password, config);

这段代码由Ashwini Jindal编写,对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接