我正在使用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
& updatedAt
采用此格式,我想要的是created_at
和updated_at
。如何更改这些默认列名???
我有另一张表user_has_contact
,其关系如下:
{
classMethods: {
associate: function(models) {
UserHasContact.belongsTo(models.user)
}
}
}
它会自动创建userId
字段,但我又希望它为user_id
。任何建议将不胜感激!
答案 0 :(得分:7)
您可以通过在配置中添加此设置进行全局操作,如下所示
var config= {
"define": {
"underscored": true
}
}
var Sequelize = require("sequelize");
var sequelize = new Sequelize(database, username, password, config);
答案 1 :(得分:5)
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
答案 2 :(得分:0)
var config= {
"define": {
"underscored": true
}
}
var Sequelize = require("sequelize");
var sequelize = new Sequelize(database, username, password, config);
ashwini jindal 的这段代码为我工作