Attualmente sto usando un MongoDB con MgO lib per un'applicazione web, ma non sono sicuro se il modo in cui lo sto usando, è buona ..Le migliori pratiche per mantenere una sessione di MgO
package db
import (
"gopkg.in/mgo.v2"
)
const (
MongoServerAddr = "192.168.0.104"
RedisServerAddr = "192.168.0.104"
)
var (
MongoSession, err = mgo.Dial(MongoServerAddr)
MDB = MongoSession.DB("message")
MCol = MDB.C("new")
MSav = MDB.C("save")
UDB = MongoSession.DB("account")
UCol = UDB.C("user")
)
Iniziamo la sessione db e creo variabili che prendono il valore di raccolta e documento, così quando ho bisogno di interrogare una raccolta, io uso la variabile per renderla.
Come quella:
func UserExist(username string) bool {
user := Users{}
err := db.UCol.Find(bson.M{"username": username}).One(&user)
if err != nil {
return false
} else {
return true
}
}
è così c'è una buona pratica o questo va bene ..? Grazie
È consigliabile utilizzare una funzione per impostare la sessione del database rispetto alle dichiarazioni variabili. Un motivo per utilizzare una funzione è che è possibile gestire il ritorno dell'errore da Dial. Per UserExist, utilizzerei il [numero di documenti nel set di risultati] (http://godoc.org/gopkg.in/mgo.v2#Query.Count) per determinare se esiste un documento. Non è necessario recuperare il documento vero e proprio. –
grazie per il suggerimento per la funzione UserExist! Ma con la funzione per avviare la connessione di sessione, posso farlo con "func init()" nel pacchetto db e assegnare la variabile globale per db e collection con la sessione di ritorno? Non sono sicuro di come mantenere la mia sessione con il db open, senza creare un "mgo.Dial()" ogni volta che ne ho bisogno, e ho anche il mio db e la raccolta già inizializzati ... – JonathanChaput