es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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 a func (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ón orm.RegisterTable. Asegúrese de que el hook AfterQuery esté correctamente registrado para el modelo PaymentMethod.

    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.

Comments are closed.