- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用 mgo (mongodb) 创建一个简单的 CRUD。
这是我的代码:
package main
import (
"fmt"
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type State struct {
CustomerId string
CreatedOn time.Time
CreatedBy string
Description string
}
type DataStore struct {
session *mgo.Session
err error
}
func (ds *DataStore) getCol(collectionName string) *mgo.Collection {
ds.session, ds.err = mgo.Dial("localhost:27017")
if ds.err != nil {
panic(ds.err)
}
return ds.session.DB("c3po_db").C(collectionName)
}
func (ds *DataStore) GetAll() []State {
var states []State
ds.err = ds.getCol("state").Find(bson.M{}).All(&states)
if ds.err != nil {
panic(ds.err)
}
ds.session.Close()
return states
}
func (ds *DataStore) GetById(customerId string) State {
var state State
ds.err = ds.getCol("state").Find(bson.M{"customerId": customerId}).One(&state)
if ds.err != nil {
panic(ds.err)
}
ds.session.Close()
return state
}
func (ds *DataStore) CreateOrUpdate(state State) bool {
_, ds.err = ds.getCol("state").Upsert(
bson.M{"customerId": state.CustomerId},
bson.M{"$set": bson.M{"description": state.Description, "createdOn": state.CreatedOn, "createdBy": state.CreatedBy}})
if ds.err != nil {
panic(ds.err)
} else {
ds.session.Close()
return true
}
ds.session.Close()
return false
}
func main() {
ds := DataStore{}
state := State{CustomerId: "3", CreatedOn: time.Now(), CreatedBy: "Ivo", Description: "6"}
ds.CreateOrUpdate(state)
fmt.Println(ds.GetById("3"))
}
结果我得到
{ 0001-01-01 00:00:00 +0000 UTC 0}
它为 GetById 打印一个空结果。 CreateOrUpdate 方法部分起作用。它只插入一条新记录,不更新现有记录。这是正确的做法吗?如何使 GetById 和 CreateOrUpdate 方法起作用?
最佳答案
下面的代码按预期工作
package main
import (
"fmt"
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type State struct {
CustomerId string
CreatedOn time.Time
CreatedBy string
Description string
}
type DataStore struct {
session *mgo.Session
err error
}
func (ds *DataStore) getCol(collectionName string) *mgo.Collection {
ds.session, ds.err = mgo.Dial("localhost:27017")
if ds.err != nil {
panic(ds.err)
}
return ds.session.DB("c3po_db").C(collectionName)
}
func (ds *DataStore) GetAll() []State {
var states []State
ds.err = ds.getCol("state").Find(bson.M{}).All(&states)
if ds.err != nil {
panic(ds.err)
}
ds.session.Close()
return states
}
func (ds *DataStore) GetById(customerId string) State {
var state State
ds.err = ds.getCol("state").Find(bson.M{"customerId": customerId}).One(&state)
if ds.err != nil {
panic(ds.err)
}
ds.session.Close()
return state
}
func (ds *DataStore) CreateOrUpdate(state State) bool {
_, ds.err = ds.getCol("state").Upsert(
bson.M{"customerId": state.CustomerId},
bson.M{"$set": state})
if ds.err != nil {
panic(ds.err)
} else {
ds.session.Close()
return true
}
ds.session.Close()
return false
}
func main() {
ds := DataStore{}
state := State{CustomerId: "3", CreatedOn: time.Now(), CreatedBy: "Ivo", Description: "6"}
ds.CreateOrUpdate(state)
fmt.Println(ds.GetById("3"))
fmt.Println(ds.GetAll())
}
关于go - GetById 和 CreateOrUpdate 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327907/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!