我有一个Golang项目,我使用Bolt作为我的数据库。我发现并开始使用This project来处理数据库的连接和操作。我目前的问题是我无法通过一个字段进行搜索并获得一个结果。
我在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)
但它返回not found
但我知道组件存储有该名称。另一方面,如果我使用Find
进行搜索,我会得到元素,但是该命令将返回许多结果,而我只想要一个,我有这个:
var components []models.Component
err := db.Find("Name", name, &components)
答案 0 :(得分:2)
Drafting answer from my comment.
Per library codebase, ID
is getting in your way even though Name
is defined as primary key.
If you would like to keep Name
as primary key, can you please remove the field ID
from struct Component
and then try method db.One
.