在博尔特中找到一个

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.