Кастомный UnmarshalBSON в mongo-go-driver - PullRequest
0 голосов
/ 31 мая 2019

Мне бы хотелось иметь какую-то "зацепку", которая запускается всякий раз, когда я получаю определенный тип объекта из базы данных. Я думал, что интерфейс Unmarshaler идеально подходит для этого, но ... Как я могу реализовать этот интерфейс, не разбирая вручную все поля самостоятельно?

Я думал сделать что-то вроде этого:

func (t *T) UnmarshalBSON(b []byte) error {
    // Simply unmarshal `b` into `t` like it would otherwise
    bson.Unmarshal(b, t) // Obviously this won't work, it'll be an infinite loop
    // Do something here
    return nil
}

Как я могу добиться этого, не разбирая вручную поля с помощью рефлекса pkg?

...