2016-03-31 91 views
10

我是BoltDB和Golang的新手,並試圖獲得您的幫助。在BoltDB中存儲數據的最佳方法

所以,我明白我只能保存字節數組([]字節)的關鍵和BoltDB的值。如果我有如下的用戶結構,並且鍵將是用戶名,那麼將數據存儲到BoltDB中期望字節數組的最佳選擇是什麼?

序列化它或JSON?還是更好的辦法?

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

謝謝你這麼多,有一個美好的夜晚

+1

[好BoltDB例如使用JSON或採空區編碼(https://bl.ocks.org/joyrexus/22c3ef0984ed957f54b9) – Mark

回答

12

是的,我會建議編組的User結構以JSON,然後使用一個唯一鍵[]byte片。不要忘記,封送到JSON只包含導出的結構字段,所以你需要改變你的結構,如下所示。

又如,請參閱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

謝謝您的幫助!很有幫助! – Gon

+6

您也可能希望查看其他序列化格式,如協議緩衝區,這可以顯着加快編組/解組並提供版本控制等功能。 –

相關問題