2016-03-31 17 views
10

Ich bin neu bei BoltDB und Golang und versuche, Ihre Hilfe zu bekommen.Beste Art, Daten in BoltDB zu speichern

Also, ich verstehe, dass ich nur Byte-Array ([] Byte) für Schlüssel und Wert von BoltDB speichern kann. Wenn ich eine Struktur von Benutzer wie folgt habe, und Schlüssel der Benutzername ist, was wäre die beste Wahl, um die Daten in BoltDB zu speichern, wo es Array von Bytes erwartet?

Serialisierung oder JSON? Oder besser?

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

Vielen Dank, hat einen guten Abend

+1

[Good BoltDB Beispiel unter Verwendung von json oder gob Codierung] (https://bl.ocks.org/joyrexus/22c3ef0984ed957f54b9) – Mark

Antwort

12

Ja, ich User Struktur zu JSON Marshalling würde empfehlen, und dann eine eindeutige Schlüssel []byte Scheibe verwenden. Vergessen Sie nicht, dass das Marshaling zu JSON nur die exportierten Strukturfelder enthält. Daher müssen Sie Ihre Struktur wie unten gezeigt ändern. Ein anderes Beispiel finden Sie unter BoltDB GitHub page.

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 
} 
+0

Vielen Dank für Ihre Hilfe! Sehr hilfreich! – Gon

+6

Sie sollten auch in andere Serialisierungsformate wie Protokollpuffer schauen, die wesentlich schneller marshalieren/unmarshalen und Funktionen wie Versionierung bereitstellen können. –

Verwandte Themen