Лучший способ хранения данных в BoltDB

Я новичок в BoltDB и Golang и пытаюсь получить вашу помощь.

Итак, я понимаю, что я могу сохранить только байтовый массив ([] byte) для ключа и значения BoltDB. Если у меня есть структура пользователя, как показано ниже, и ключ будет именем пользователя, какой будет лучший выбор для хранения данных в BoltDB, где он ожидает массив байтов?

Сериализовать его или JSON? Или лучше?

type User struct {
    name string
    age  int
    location string
    password string
    address string 
}

Большое вам спасибо, хорошо проверив

Ответ 1

Да, я бы рекомендовал объединить структуру User в JSON, а затем использовать уникальный ключевой фрагмент []byte. Не забывайте, что маршалинг JSON включает только экспортированные поля структуры, поэтому вам нужно будет изменить структуру, как показано ниже.

В качестве другого примера см. страницу BoltDB GitHub.

type User struct {
    Name string
    Age  int
    Location string
    Password string
    Address string 
}

func (user *User) save(db *bolt.DB) error {
    // Store the user model in the user bucket using the username as the key.
    err := db.Update(func(tx *bolt.Tx) error {
        b, err := tx.CreateBucketIfNotExists(usersBucket)
        if err != nil {
            return err
        }    

        encoded, err := json.Marshal(user)
        if err != nil {
            return err
        }
        return b.Put([]byte(user.Name), encoded)
    })
    return err
}