Go 在螺栓中找到一个

Go 在螺栓中找到一个,go,boltdb,Go,Boltdb,我有一个Golang项目,我使用Bolt作为我的数据库。我发现并开始使用它来处理数据库上的连接和操作。我目前的问题是,我无法按一个字段进行搜索并得到一个结果 我在Golang中的结构定义是: type Component struct { ID int `storm:"increment"` Name string `storm:"id,unique"` // primary key Cars []string

我有一个Golang项目,我使用Bolt作为我的数据库。我发现并开始使用它来处理数据库上的连接和操作。我目前的问题是,我无法按一个字段进行搜索并得到一个结果

我在Golang中的结构定义是:

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
作为主键,请从struct
Component
中删除字段
ID
,然后尝试方法
db.One

从我的评论中起草答案

根据库代码库,
ID
正在妨碍您,即使
Name
被定义为主键


如果您想保留
Name
作为主键,请从struct
Component
中删除字段
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
作为主键,请从struct
Component
中删除字段
ID
,然后尝试方法
db.One
@dave谢谢,这是一个很好的解决方法@天哪,你是对的!我就这样修好了谢谢!不客气。