本文整理汇总了Golang中upper/io/db.Result.One方法的典型用法代码示例。如果您正苦于以下问题:Golang Result.One方法的具体用法?Golang Result.One怎么用?Golang Result.One使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类upper/io/db.Result
的用法示例。
在下文中一共展示了Result.One方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestFunction
// Attempts to use functions within database queries.
func TestFunction(t *testing.T) {
var err error
var res db.Result
var sess db.Database
var artist db.Collection
var total uint64
if sess, err = db.Open(Adapter, settings); err != nil {
t.Fatal(err)
}
defer sess.Close()
if artist, err = sess.Collection("artist"); err != nil {
t.Fatal(err)
}
row_s := struct {
Id uint64
Name string
}{}
res = artist.Find(db.Cond{"id NOT IN": []int{0, -1}})
if err = res.One(&row_s); err != nil {
t.Fatal(err)
}
if total, err = res.Count(); err != nil {
t.Fatal(err)
}
if total != 3 {
t.Fatalf("Expecting 3 items.")
}
res = artist.Find(db.Cond{"id": db.Func{"NOT IN", []int{0, -1}}})
if err = res.One(&row_s); err != nil {
t.Fatal(err)
}
if total, err = res.Count(); err != nil {
t.Fatal(err)
}
if total != 3 {
t.Fatalf("Expecting 3 items.")
}
res.Close()
}
示例2: TestDataTypes
// Attempts to add many different datatypes to a single row in a collection,
// then it tries to get the stored datatypes and check if the stored and the
// original values match.
func TestDataTypes(t *testing.T) {
var res db.Result
var sess db.Database
var dataTypes db.Collection
var err error
var id interface{}
var exists uint64
if sess, err = db.Open(Adapter, settings); err != nil {
t.Fatal(err)
}
defer sess.Close()
// Getting a pointer to the "data_types" collection.
if dataTypes, err = sess.Collection("data_types"); err != nil {
t.Fatal(err)
}
// Removing all data.
if err = dataTypes.Truncate(); err != nil {
t.Fatal(err)
}
// Appending our test subject.
if id, err = dataTypes.Append(testValues); err != nil {
t.Fatal(err)
}
// Defining our set.
res = dataTypes.Find(db.Cond{"id": id})
if exists, err = res.Count(); err != nil {
t.Fatal(err)
}
if exists == 0 {
t.Fatalf("Expecting an item.")
}
// Trying to dump the subject into an empty structure of the same type.
var item testValuesStruct
res.One(&item)
// The original value and the test subject must match.
if reflect.DeepEqual(item, testValues) == false {
t.Fatalf("Struct is different.")
}
}
示例3: TestDataTypes
// This test tries to add many different datatypes to a single row in a
// collection, then it tries to get the stored datatypes and check if the
// stored and the original values match.
func TestDataTypes(t *testing.T) {
var res db.Result
// Opening database.
sess, err := db.Open(wrapperName, settings)
if err != nil {
t.Fatalf(err.Error())
}
// We should close the database when it's no longer in use.
defer sess.Close()
// Getting a pointer to the "data_types" collection.
dataTypes, err := sess.Collection("data_types")
dataTypes.Truncate()
// Appending our test subject.
id, err := dataTypes.Append(testValues)
if err != nil {
t.Fatalf(err.Error())
}
// Trying to get the same subject we added.
res, err = dataTypes.Find(db.Cond{"id": id})
if err != nil {
t.Fatalf(err.Error())
}
exists, err := res.Count()
if err != nil {
t.Fatalf(err.Error())
}
if exists == 0 {
t.Errorf("Expecting an item.")
}
// Trying to dump the subject into an empty structure of the same type.
var item testValuesStruct
res.One(&item)
// The original value and the test subject must match.
if reflect.DeepEqual(item, testValues) == false {
t.Errorf("Struct is different.")
}
}
示例4: FindByConditions
func (self *Dh) FindByConditions(conditions interface{}) (uint64, api.Err) {
var errs api.Err
var res db.Result
res = Collection.Find(conditions)
count, _ := res.Count()
if count == 0 {
errs.Push(api.Msg{
Field: "Not found",
Error: api.ErrNoSuchRow,
})
return count, errs
}
res.One(self.Model)
return count, errs
}
示例5: FindByFieldValue
func (self *Dh) FindByFieldValue(field string, value interface{}) (interface{}, api.Err) {
var errs api.Err
var res db.Result
res = Collection.Find(db.Cond{field: value})
count, _ := res.Count()
if count == 0 {
errs.Push(api.Msg{
Field: "Not found",
Error: api.ErrNoSuchRow,
})
return nil, errs
}
res.One(self.Model)
return self.Model, errs
}
示例6: FindById
// FindById
// Podemos hacer busquedas por PK Id este metodo
// recibe como parametro la pk de la tabla y trae todos sus
// elementos.
func (self *Dh) FindById(id int64) (interface{}, api.Err) {
var errs api.Err
var res db.Result
res = Collection.Find(db.Cond{"id": id})
count, _ := res.Count()
if count == 0 {
errs.Push(api.Msg{
Field: "Not found",
Error: api.ErrNoSuchRow,
})
return nil, errs
}
res.One(self.Model)
return self.Model, errs
}
示例7: TestFunction
// Test database functions
func TestFunction(t *testing.T) {
var err error
var res db.Result
// Opening database.
sess, err := db.Open(Adapter, settings)
if err != nil {
t.Fatal(err)
}
// We should close the database when it's no longer in use.
defer sess.Close()
// Getting a pointer to the "artist" collection.
artist, err := sess.Collection("artist")
if err != nil {
t.Fatal(err)
}
row_s := struct {
Id uint64
Name string
}{}
res = artist.Find(db.Cond{"_id $nin": []int{0, -1}})
if err = res.One(&row_s); err != nil {
t.Fatalf("One: %q", err)
}
res = artist.Find(db.Cond{"_id": db.Func{"$nin", []int{0, -1}}})
if err = res.One(&row_s); err != nil {
t.Fatalf("One: %q", err)
}
res.Close()
}
示例8: DeleteLogic
func (self *Dh) DeleteLogic() api.Err {
var errs api.Err
var res db.Result
id := reflect.ValueOf(self.Model).Elem().FieldByName("Id").Interface().(int64)
res = Collection.Find(db.Cond{"id": id})
res.One(self.Model)
reflect.ValueOf(self.Model).Elem().FieldByName("Status").SetBool(false)
// Estatus := reflect.ValueOf(self.Model).Elem().FieldByName("Estatus").Interface().(bool)
err := res.Update(self.Model)
if err != nil {
errs.Push(api.Msg{
Field: "Save",
Error: err.Error(),
})
return errs
}
return errs
}
示例9: TestExplicitAndDefaultMapping
func TestExplicitAndDefaultMapping(t *testing.T) {
var err error
var col db.Collection
var sess db.Database
var res db.Result
var testE mapE
var testN mapN
for _, wrapper := range wrappers {
if settings[wrapper] == nil {
t.Fatalf(`No such settings entry for wrapper %s.`, wrapper)
} else {
if sess, err = db.Open(wrapper, *settings[wrapper]); err != nil {
t.Fatalf(`Test for wrapper %s failed: %q`, wrapper, err)
}
defer sess.Close()
col, err = sess.Collection("Case_Test")
if col, err = sess.Collection("CaSe_TesT"); err != nil {
if wrapper == `mongo` && err == db.ErrCollectionDoesNotExist {
// Nothing, it's expected.
} else {
t.Fatal(err)
}
}
if err = col.Truncate(); err != nil {
if wrapper == `mongo` {
// Nothing, it's expected.
} else {
t.Fatal(err)
}
}
// Testing explicit mapping.
testE = mapE{
CaseTest: "Hello!",
}
if _, err = col.Append(testE); err != nil {
t.Fatal(err)
}
res = col.Find(db.Cond{"Case_Test": "Hello!"})
if wrapper == `ql` {
res = res.Select(`id() as ID`, `Case_Test`)
}
if err = res.One(&testE); err != nil {
t.Fatal(err)
}
if wrapper == `mongo` {
if testE.MongoID.Valid() == false {
t.Fatalf("Expecting an ID.")
}
} else {
if testE.ID == 0 {
t.Fatalf("Expecting an ID.")
}
}
// Testing default mapping.
testN = mapN{
Casetest: "World!",
}
if _, err = col.Append(testN); err != nil {
t.Fatal(err)
}
if wrapper == `mongo` {
// We don't have this kind of control with mongodb.
res = col.Find(db.Cond{"casetest": "World!"})
} else {
res = col.Find(db.Cond{"Case_Test": "World!"})
}
if wrapper == `ql` {
res = res.Select(`id() as ID`, `Case_Test`)
}
if err = res.One(&testN); err != nil {
t.Fatal(err)
}
if wrapper == `mongo` {
if testN.MongoID.Valid() == false {
t.Fatalf("Expecting an ID.")
}
} else {
if testN.ID == 0 {
t.Fatalf("Expecting an ID.")
}
//.........这里部分代码省略.........
示例10: TestSimpleCRUD
func TestSimpleCRUD(t *testing.T) {
var err error
var controlItem birthday
for _, wrapper := range wrappers {
if settings[wrapper] == nil {
t.Fatalf(`No such settings entry for wrapper %s.`, wrapper)
} else {
var sess db.Database
sess, err = db.Open(wrapper, *settings[wrapper])
if err != nil {
t.Fatalf(`Test for wrapper %s failed: %q`, wrapper, err)
}
defer sess.Close()
born := time.Date(1941, time.January, 5, 0, 0, 0, 0, time.Local)
controlItem = birthday{
Name: "Hayao Miyazaki",
Born: born,
BornUT: &timeType{born},
}
col, err := sess.Collection(`birthdays`)
if err != nil {
if wrapper == `mongo` && err == db.ErrCollectionDoesNotExist {
// Expected error with mongodb.
} else {
t.Fatalf(`Could not use collection with wrapper %s: %q`, wrapper, err)
}
}
var id interface{}
if id, err = col.Append(controlItem); err != nil {
t.Fatalf(`Could not append item with wrapper %s: %q`, wrapper, err)
}
var res db.Result
switch wrapper {
case `mongo`:
res = col.Find(db.Cond{"_id": id.(bson.ObjectId)})
case `ql`:
res = col.Find(db.Cond{"id()": id})
default:
res = col.Find(db.Cond{"id": id})
}
var total uint64
total, err = res.Count()
if total != 1 {
t.Fatalf("%s: Expecting one row.", wrapper)
}
// No support for Marshaler and Unmarshaler is implemeted for QL and
// MongoDB.
if wrapper == `ql` || wrapper == `mongo` {
continue
}
var testItem birthday
err = res.One(&testItem)
if err != nil {
t.Fatalf("%s One(): %s", wrapper, err)
}
if reflect.DeepEqual(testItem, controlItem) == false {
t.Errorf("%s: testItem: %v (ts: %v)\n", wrapper, testItem, testItem.BornUT.value.Unix())
t.Errorf("%s: controlItem: %v (ts: %v)\n", wrapper, controlItem, controlItem.BornUT.value.Unix())
t.Fatalf("%s: Structs are different", wrapper)
}
var testItems []birthday
err = res.All(&testItems)
if err != nil {
t.Fatalf("%s All(): %s", wrapper, err)
}
if len(testItems) == 0 {
t.Fatalf("%s All(): Expecting at least one row.", wrapper)
}
for _, testItem = range testItems {
if reflect.DeepEqual(testItem, controlItem) == false {
t.Errorf("%s: testItem: %v\n", wrapper, testItem)
t.Errorf("%s: controlItem: %v\n", wrapper, controlItem)
t.Fatalf("%s: Structs are different", wrapper)
}
}
controlItem.Name = `宮崎駿`
err = res.Update(controlItem)
if err != nil {
//.........这里部分代码省略.........
示例11: TestSimpleCRUD
func TestSimpleCRUD(t *testing.T) {
var err error
var controlItem Birthday
for _, wrapper := range wrappers {
if settings[wrapper] == nil {
t.Fatalf(`No such settings entry for wrapper %s.`, wrapper)
} else {
var sess db.Database
sess, err = db.Open(wrapper, *settings[wrapper])
if err != nil {
t.Fatalf(`Test for wrapper %s failed: %s`, wrapper, err.Error())
}
controlItem = Birthday{
Name: "Hayao Miyazaki",
Born: time.Date(1941, time.January, 5, 0, 0, 0, 0, time.Local),
}
col, err := sess.Collection(`birthdays`)
if err != nil {
if wrapper == `mongo` && err == db.ErrCollectionDoesNotExists {
// Expected error with mongodb.
} else {
t.Fatalf(`Could not use collection with wrapper %s: %s`, wrapper, err.Error())
}
}
var id interface{}
id, err = col.Append(controlItem)
if err != nil {
t.Fatalf(`Could not append item with wrapper %s: %s`, wrapper, err.Error())
}
var res db.Result
if wrapper == `mongo` {
res = col.Find(db.Cond{"_id": id})
} else {
res = col.Find(db.Cond{"id": id})
}
var testItem Birthday
res.One(&testItem)
if reflect.DeepEqual(testItem, controlItem) == false {
t.Errorf("Struct is different with wrapper %s.", wrapper)
}
controlItem.Name = `宮崎駿`
err = res.Update(controlItem)
if err != nil {
t.Fatalf(`Could not update with wrapper %s: %s`, wrapper, err.Error())
}
res.One(&testItem)
if reflect.DeepEqual(testItem, controlItem) == false {
t.Errorf("Struct is different with wrapper %s.", wrapper)
}
err = res.Remove()
if err != nil {
t.Fatalf(`Could not update with wrapper %s: %s`, wrapper, err.Error())
}
var total uint64
total, err = res.Count()
if total != 0 {
t.Fatalf(`Expecting no items %s: %s`, wrapper, err.Error())
}
err = res.Close()
if err != nil {
t.Errorf("Failed to close result %s: %s.", wrapper, err.Error())
}
err = sess.Close()
if err != nil {
t.Errorf("Failed to close %s: %s.", wrapper, err.Error())
}
}
}
}