我正在尝试创建一个序列化模型,其中一个属性从其他两个属性中获取其值集,但是经过数小时的研究和尝试不同的方法,我没有任何运气。
module.exports = function (sequelize, DataTypes) {
return sequelize.define('Users', {
id: { type: DataTypes.INTEGER, allowNull: false, autoIncrement: true, primaryKey: true },
userName: { type: DataTypes.STRING, allowNull: false, unique: true },
firstName: { type: DataTypes.STRING, allowNull: false },
lastName: { type: DataTypes.STRING, allowNull: false },
fullName: {
type: DataTypes.STRING,
allowNull: false,
getterMethods: {
fullName() {
return this.firstName + ' ' + this.lastName
}
},
setterMethods: {
fullName(value) {
const names = value.split(' ');
this.setDataValue('firstName', names.slice(0, -1).join(' '));
this.setDataValue('lastName', names.slice(0, -1).join(' '));
}
}
},
userType: { type: DataTypes.STRING, allowNull: false },
directPhone: { type: DataTypes.STRING, allowNull: false },
email: { type: DataTypes.STRING, allowNull: false },
password: { type: DataTypes.STRING, allowNull: false },
})
}
基本上,我有一个用户模型,我希望“ fullname”属性是firstName和lastName属性的串联。
上面的代码是环顾四周后得到的最新版本,但肯定无法正常工作。
先谢谢了。
答案 0 :(得分:0)
这应该有效:
module.exports = function (sequelize, DataTypes) {
return sequelize.define('Users', {
id: { type: DataTypes.INTEGER, allowNull: false, autoIncrement: true, primaryKey: true },
userName: { type: DataTypes.STRING, allowNull: false, unique: true },
firstName: { type: DataTypes.STRING, allowNull: false },
lastName: { type: DataTypes.STRING, allowNull: false },
fullName: {
type: DataTypes.STRING,
allowNull: false,
get: function() {
return this.firstName + ' ' + this.lastName
},
set: function(value) {
const names = value.split(' ');
this.setDataValue('firstName', names[0]);
this.setDataValue('lastName', names[1]);
}
},
userType: { type: DataTypes.STRING, allowNull: false },
directPhone: { type: DataTypes.STRING, allowNull: false },
email: { type: DataTypes.STRING, allowNull: false },
password: { type: DataTypes.STRING, allowNull: false },
})
}