2015-04-23 5 views
3

Я работаю с Nodejs, Sequelize. Это следующая структура моей пользовательской модели:Изменить имя столбца по умолчанию 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

Я не хочу createdAt & updatedAt в этом формате, я хочу created_at и updated_at. Как изменить это имя столбца по умолчанию ???

У меня есть еще один стол user_has_contact со следующим соотношением:

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

Его автоматического создания userId поля, но снова я хочу его как user_id. Любое предложение будет оценено!

ответ

4
sequelize.define('user', ..., { 
    createdAt: 'created_at', 
    updatedAt: 'updated_at', 
}); 

http://docs.sequelizejs.com/en/latest/docs/models/#configuration

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

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

+0

Если я буду использовать 'ForeignKey:«user_id «Мне также нужно создать столбец user_id». – Manwal

+0

Нет, если вы позволите sequelize создать таблицы ('sequelize.sync') –

6

вы можете сделать это на глобальном уровне путем добавления этого параметра в конфигурации, как показано ниже

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

    var Sequelize = require("sequelize"); 
    var sequelize = new Sequelize(database, username, password, config); 
Смежные вопросы