0
アカウント作成後に列に値を追加しようとしていますが、これをモデルのインスタンスメソッドから実行したいと思います。私は典型的な方法でサービス内のアカウントを作成しています。また、後で生成したユーザーIDを、ユーザーごとのユーザー表にも格納されている別の生成IDと連結するために使用します。私は基本的に次のようにユーザーが作成されると、インスタンスメソッドを呼び出すしたいと思います:Sequelize:インスタンスメソッドから値を更新する方法がありますか
モデル:
module.exports = function(sequelize) {
let User = sequelize.define('User', {
email: ORM.STRING,
password: ORM.STRING,
accountVerified: {
type: ORM.INTEGER,
defaultValue: 0
}
},
{
classMethods: {
hashPassword: function(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
}
},
instanceMethods: {
validatePassword: function(password) {
return bcrypt.compareSync(password, this.password);
},
uniqueId: function() {
let ch = this.id + sid.generate();
this.userId = this.id + sid.generate();
}
}
});
return User;
};
サービス:
findOrCreate(email, password, done) {
let cachedEmail = email;
this.models.User
.findOrCreate({
where: { email: email },
defaults: {
password: this.models.User.hashPassword(password)
}
})
.spread(function(user, created) {
if (!created) {
return done(null, false, {
email: cachedEmail,
message: `Email ${cachedEmail} already exists.`
});
}
user.uniqueId();
done(null, user);
});
}
ありがとうございます。私はそれがより効率的だと思うので、私はUUIDを生成することに行きました。あなたの答えは、しかし、私にとっては良い学習経験であり、私はユースケースが遅かれ早かれ出てくることを確信しています。 – Aaron