2016-03-31 60 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

您也可能希望查看其他序列化格式,如协议缓冲区,这可以显着加快编组/解组并提供版本控制等功能。 –

相关问题