在博尔特中找到一个
Find one in Bolt
我有一个 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)
但它 returns not found
但我知道组件以该名称存储。另一方面,如果我用 Find
进行搜索,我得到了元素,但是该命令是 return 很多结果,而我只想要一个,我有这个:
var components []models.Component
err := db.Find("Name", name, &components)
根据我的评论起草答案。
每个库代码库,即使 Name
被定义为主键,ID
也会妨碍您。
如果您想将 Name
保留为主键,能否请您从结构 Component
中删除字段 ID
,然后尝试方法 db.One
.
我有一个 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)
但它 returns not found
但我知道组件以该名称存储。另一方面,如果我用 Find
进行搜索,我得到了元素,但是该命令是 return 很多结果,而我只想要一个,我有这个:
var components []models.Component
err := db.Find("Name", name, &components)
根据我的评论起草答案。
每个库代码库,即使 Name
被定义为主键,ID
也会妨碍您。
如果您想将 Name
保留为主键,能否请您从结构 Component
中删除字段 ID
,然后尝试方法 db.One
.