2014-04-03 55 views
6

我想知道是否有任何方法可以讓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) 
    } 
} 

感謝,

回答

15

你可以做,通過場標記,如下所示:

type T struct { 
    Field string `bson:"-"` 
} 
+0

甜,你是非常有幫助的古斯塔沃 – Gary

相關問題