Go 在螺栓中找到一个
我有一个Golang项目,我使用Bolt作为我的数据库。我发现并开始使用它来处理数据库上的连接和操作。我目前的问题是,我无法按一个字段进行搜索并得到一个结果 我在Golang中的结构定义是:Go 在螺栓中找到一个,go,boltdb,Go,Boltdb,我有一个Golang项目,我使用Bolt作为我的数据库。我发现并开始使用它来处理数据库上的连接和操作。我目前的问题是,我无法按一个字段进行搜索并得到一个结果 我在Golang中的结构定义是: type Component struct { ID int `storm:"increment"` Name string `storm:"id,unique"` // primary key Cars []string
type Component struct {
ID int `storm:"increment"`
Name string `storm:"id,unique"` // primary key
Cars []string `storm:"index"` // this field will be indexed
Houses []string `storm:"index"` // this field will be indexed
Pets []string `storm:"index"` // this field will be indexed
Children []string `storm:"index"` // this field will be indexed
Level int
}
首先,我知道有一个字段ID和一个带有标记ID的字段名是很奇怪的,问题是我想要这个名称作为ID,也可能作为键。我做了一些插入,一切正常,我甚至检索到了所有的值,它工作得非常完美。
现在,我想通过他的名字得到一个元素,我有:
name := "someComponent"
var component models.Component
err := db.One("Name", name, &component)
var components []models.Component
err := db.Find("Name", name, &components)
但是它返回notfound
,但是我知道一个组件是用这个名称存储的。另一方面,如果我使用Find
进行搜索,我会得到元素,但该命令会返回许多结果,而我只需要一个结果,我有以下结果:
name := "someComponent"
var component models.Component
err := db.One("Name", name, &component)
var components []models.Component
err := db.Find("Name", name, &components)
根据我的评论起草答案 根据库代码库,
ID
正在妨碍您,即使Name
被定义为主键
如果您想保留
Name
作为主键,请从structComponent
中删除字段ID
,然后尝试方法db.One
从我的评论中起草答案
根据库代码库,ID
正在妨碍您,即使Name
被定义为主键
如果您想保留
Name
作为主键,请从structComponent
中删除字段ID
,然后尝试方法db.One
只是一个解决方法:err=db.Find(“Name”,Name,&components,storm.Limit(1))
如果您想保留名称
作为主键,请从struct组件
中删除字段ID
,然后尝试方法db.One
@dave谢谢,这是一个很好的解决方法@天哪,你是对的!我就这样修好了谢谢!不客气。请考虑一下解决方法:err=db.Find(“Name”,Name,&components,storm.Limit(1))
如果您想保留Name
作为主键,请从structComponent
中删除字段ID
,然后尝试方法db.One
@dave谢谢,这是一个很好的解决方法@天哪,你是对的!我就这样修好了谢谢!不客气。