即使不为空,Mgo 也会省略字段

我想知道是否有任何方法可以使 stuct 字段即使不为空也不会提交给 mgo。


我发现这样做的唯一方法是使字段小写,这使得访问变得很痛苦。还有其他方法吗?


这是一个示例,我在这里的目标是不将 SSN 提交到数据库中,但仍然使用大写字母。


package main


import (

  "fmt"

    "crypto/sha1"

    "encoding/base64"

    "labix.org/v2/mgo"

)


type Person struct{

  Name string

  SSN string

  HashedSSN string

}


func main() {

  bob := Person{"Bob", "fake_ssn", ""}

  hasher := sha1.New()

  hasher.Write( []byte(bob.SSN))

  sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))

  bob.HashedSSN = sha

  mgoSession, err := mgo.Dial("localhost:27017")

  if err != nil {

    fmt.Println("mongo_config#initMongoSessions : Could not dial to mgoSession", err)

  } else {

    mgoSession.DB("test").C("person").Insert(bob)

  }

}

谢谢,


喵喵时光机
浏览 189回答 1
1回答

慕慕森

您可以通过使用字段标签来做到这一点,如下所示:type T struct {    Field string `bson:"-"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go