【问题标题】:Change default column name sequelize更改默认列名 sequelize
【发布时间】:2015-07-01 22:44:15
【问题描述】:

我正在使用 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 列:

  • 身份证
  • createdAt
  • 更新时间

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

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

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

它会自动创建userId 字段,但我再次希望它为user_id。任何建议将不胜感激!

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:
    sequelize.define('user', ..., {
      createdAt: 'created_at',
      updatedAt: 'updated_at',
    });
    

    http://docs.sequelizejs.com/manual/tutorial/models-definition.html#configuration

    UserHasContact.belongsTo(models.user, { foreignKey: 'user_id' })
    

    http://docs.sequelizejs.com/en/latest/docs/associations/#foreign-keys

    【讨论】:

    • 如果我要使用foreignKey: 'user_id',我是否还必须创建user_id 列。
    • 如果您让 sequelize 创建表格,则不会 (sequelize.sync)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
           var config=  {
           "define": {
                "underscored": true
              }
          }
      var Sequelize = require("sequelize");
      var sequelize = new Sequelize(database, username, password, config);
      

      ashwini jindal 的这段代码为我工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        • 2014-11-06
        • 2018-02-15
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多