我在我的Users模型上定义了一个getter方法,如此,
'use strict';
module.exports = function(sequelize, DataTypes) {
var Users = sequelize.define('Users', {
name: DataTypes.STRING,
uuid: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
},
poll_ids: DataTypes.ARRAY(DataTypes.INTEGER)
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
Users.hasMany(models.Polls, {
foreignKey: 'userId'
});
}
},
getterMethods: {
getUUID() {
return this.getDataValue('uuid');
}
}
});
return Users;
};
我正试图像这样运行它,
models.Users.create({
name: name,
uuid: uuid,
poll_ids: poll_ids
}).then((user) => {
console.log(user.getUUID());
});
然而,当我这样做时,我收到以下错误。
未处理拒绝TypeError:user.getUUID不是函数
注意:我已经使用sequelize-cli定义了我的模型和迁移。我在执行迁移后将getterMethods添加到模型文件中。我运行了一次撤消迁移,同步数据库并再次迁移,以确保迁移文件反映了对我的模型的更改。但是,我不确定是否可以对迁移文件进行更新。我哪里错了?
答案 0 :(得分:0)
好的,终于有了一些工作要做。将其定义为模型的一部分不起作用,但由于某种原因将其定义为属性的一部分。
module.exports = function(sequelize, DataTypes) {
var Users = sequelize.define('Users', {
name: DataTypes.STRING,
uuid: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
get() {
return this.getDataValue('uuid');
}
},
poll_ids: DataTypes.ARRAY(DataTypes.INTEGER)
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
Users.hasMany(models.Polls, {
foreignKey: 'userId'
});
}
}
});
return Users;
};
在路线档案
中models.Users.create({
name: name,
uuid: uuid,
poll_ids: poll_ids
}).then((user) => {
console.log('Finally');
console.log(user.get('uuid'));
});
答案 1 :(得分:0)
我暂时没有在文档中看到它,但定义instanceMethods
似乎适用于您希望通过getUUID()
将getterMethods:
替换为instanceMethods
,您应该可以在.getUUID(
模型的实例上访问Users
。