回调
pop提供了一种在数据库操作之前和之后执行代码的方法。这是通过为模型定义特定的方法来实现的。
例如,在用户表插入数据之前,要加密用户密码,可以这么做:
type User struct {
ID uuid.UUID
Email string
Password string
}
func (u *User) BeforeCreate(tx *pop.Connection) error {
hash, err := bcrypt.GenerateFromPassword([]byte(u.Password), bcrypt.DefaultCost)
if err != nil {
return errors.WithStack(err)
}
u.Password = string(hash)
return nil
}
在上面的示例中,当调用save方法时,将在写入数据库之前调用beforecreate方法。
可用的回调包括: