我想知道是否有任何方法可以让一个不会被提交到mgo的stuct字段,即使它不是空的.
我发现这样做的唯一方法是将字段设为小写,这使得访问变得很麻烦.还有另外一种方法吗?
这是一个例子,我的目标是不将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)
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
我正在使用 go 1.4 运行一个程序,我试图将一个大结构传递给一个 go 函数。
go ProcessImpression(network, &logImpression, campaign, actualSpent, partnerAccount, deviceId, otherParams)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
runtime.newproc: function arguments too large for new goroutine
Run Code Online (Sandbox Code Playgroud)
我已经转向通过引用传递,这有帮助,但我想知道是否有某种方法可以在 go 函数中传递大型结构。
谢谢,
我正在尝试对我的 postgres 数据库进行简单的健康检查以获取长生不老药。
在 Rails 中,我会做类似的事情: ActiveRecord::Base.verify_active_connections
灵丹妙药上有没有类似的东西?
我试图创建一个iOS,它将使用优步API来做一些事情,比如获取游乐设施和什么不是.我试图在iPhone上实现OAuth 2.0而不使用任何服务器端帮助.
那可能吗?有没有人这样做过?
以下是一些参考:
优步认证:https://developer.uber.com/v1/auth/
Oauth 2.0:https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
我正在编写一个快速写入mongodb的应用程序.对于mongodb和mgo来说太快了.我的问题是,有没有办法让我确定mongo无法跟上并开始阻止?但我也不想不必要地阻止.以下是模拟问题的代码示例:
package main
import (
"labix.org/v2/mgo"
"time"
"fmt"
)
// in database name is a string and age is an int
type Dog struct{
Breed string "breed"
}
type Person struct{
Name string "name"
Pet Dog `bson:",inline"`
Ts time.Time
}
func insert(session *mgo.Session, bob Person){
err := session.DB("db_log").C("people").Insert(&bob)
if err != nil {
panic("Could not insert into database")
}
}
func main() {
session, _ := mgo.Dial("localhost:27017")
bob := Person{Name : "Robert", Pet : Dog{}}
i := 0
for { …Run Code Online (Sandbox Code Playgroud) 我的代码错误出现了像这样的strack跟踪:
unexpected fault address 0x0
fatal error: fault
[signal 0xb code=0x80 addr=0x0 pc=0x407d50]
goroutine 52246872 [running]:
runtime.throw(0xad6a77)
/usr/local/go/src/pkg/runtime/panic.c:464 +0x69 fp=0xc214d2c1f8
runtime.sigpanic()
/usr/local/go/src/pkg/runtime/os_linux.c:237 +0xe9 fp=0xc214d2c210
hash_lookup(0x671ec0, 0xc21001eed0, 0xc214d2c2d0)
/usr/local/go/src/pkg/runtime/hashmap.c:502 +0x150 fp=0xc214d2c290
runtime.mapaccess(0x671ec0, 0xc21001eed0, 0xc214d2c318, 0xc214d2c328, 0xc214d2c330)
/usr/local/go/src/pkg/runtime/hashmap.c:1004 +0x57 fp=0xc214d2c2c0
runtime.mapaccess2(0x671ec0, 0xc21001eed0, 0x389c, 0x2060009ae, 0xad4dc0, ...)
/usr/local/go/src/pkg/runtime/hashmap.c:1061 +0x5d fp=0xc214d2c308
growmobile.com/rtb/cache.HistogramCheck(0xc2121eafd0, 0xc, 0xeca93c6a0, 0x852a9f8, 0xad4dc0, ...)
/mnt/rtb_server/go/src/growmobile.com/rtb/cache/histogram_cache.go:211 +0x16b fp=0xc214d2c798
growmobile.com/rtb/controller.processBidRequest(0xc2121eafd0, 0xc, 0xeca93c6a0, 0x852a9f8, 0xad4dc0, ...)
/mnt/rtb_server/go/src/growmobile.com/rtb/controller/bidder_logic.go:272 +0x7c2 fp=0xc214d2e928
----- stack segment boundary -----
growmobile.com/rtb/controller.Bid(0x7f7a14250ed8, 0xc2197b3a00, 0xc2157f9dd0)
/mnt/rtb_server/go/src/growmobile.com/rtb/controller/controller.go:96 +0x903 fp=0x7f79f8dd9da0
net/http.HandlerFunc.ServeHTTP(0x800850, 0x7f7a14250ed8, 0xc2197b3a00, 0xc2157f9dd0) …Run Code Online (Sandbox Code Playgroud)