使用Go中的mgo插入对象的结果是什么?

huangapple go评论102阅读模式
英文:

Find out result of inserting object using mgo in Go

问题

我想问一下,使用集合插入新对象时,是否有办法找出插入是否成功。

使用单个操作进行插入(Insert(object))。

我的意思是,我不想发送另一个查询到数据库来查找记录是否存在。我需要一个单一的原子操作(插入 -> 结果(是否成功) - 伪代码)。

英文:

I would like to ask you if there is a way to find out if insertion was successful when inserting new object using collection.

Insert(object) with single operation.

What I mean is that, I don't want to send another query to the db to find out if there is a record or not. I need one single atomic operation (insert -> result (isSuccessful) - pseudo code).

答案1

得分: 1

Insert 方法返回一个表示成功或失败的错误对象。你需要先设置会话的安全模式以启用这种行为。

session.SetSafe(&mgo.Safe{}) // <-- 首先设置安全模式!
c := session.DB("test").C("people")
err = c.Insert(&Person{"Ale", "+55 53 8116 9639"})
if err != nil { // <-- 然后在插入后检查错误!
    fmt.Printf("发生错误:%v", err)
} else {
    fmt.Print("成功!")
}
英文:

The Insert method returns an error object that represents it success or failure. You need to set the safe mode of the session first to enable this behaviour.

session.SetSafe(&amp;mgo.Safe{}) // &lt;-- first set safe mode!
c := session.DB(&quot;test&quot;).C(&quot;people&quot;)
err = c.Insert(&amp;Person{&quot;Ale&quot;, &quot;+55 53 8116 9639&quot;})
if err != nil { // &lt;-- then check error after insert!
    fmt.Printf(&quot;There was an error: %v&quot;, err)
} else {
    fmt.Print(&quot;Success!&quot;)
}

huangapple
  • 本文由 发表于 2014年4月2日 15:52:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/22804856.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定