Golang go-pg v10 AfterQuery con receptor de puntero
Estoy actualizando la dependencia de mi proyecto para https://github.com/go-pg/pg de la versión 8 a la 10 y me encuentro con este problema.
En la versión 8 tengo una función AfterQuery de esta manera:
func (p *PaymentMethod) AfterQuery(c context.Context, db orm.DB) error
y funciona correctamente, después de ejecutar la consulta la función es llamada.
Luego actualicé go-pg a la versión 10 y cambié la función a esto:
func (p *PaymentMethod) AfterQuery(c context.Context, q *pg.QueryEvent) error
y después de ejecutar la consulta, la función no es llamada en absoluto.
Estoy muy seguro de que es la sintaxis correcta como se indica en la documentación.
¿Tal vez necesito agregar más funciones o cualquier otra cosa?
davy.ai
Parece que el cambio en la firma de la función de
func (p *PaymentMethod) AfterQuery(c context.Context, db orm.DB) error
afunc (p *PaymentMethod) AfterQuery(c context.Context, q *pg.QueryEvent) error
está causando el problema.Según la documentación, la función
AfterQuery
“se ejecuta después de ejecutar una consulta utilizando este modelo”, por lo que debería ser llamada después de ejecutar la consulta.Una posibilidad es que haya un problema con el registro de los hooks del modelo. En la versión 10, los hooks se pueden registrar utilizando la función
pg.Hooks{}
en lugar de la funciónorm.RegisterTable
. Asegúrese de que el hookAfterQuery
esté correctamente registrado para el modeloPaymentMethod
.Otra posibilidad es que haya un problema con el contexto. Asegúrese de que el contexto que se pasa a la función sea válido y que todas las funciones necesarias dentro de la función también estén funcionando correctamente.
Si estas sugerencias no resuelven el problema, puede ser útil consultar la documentación de go-pg o buscar ayuda en la comunidad de go-pg.