0

我有一个 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的字段 Name 很奇怪,问题是我希望名称作为 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)
4

1 回答 1

2

从我的评论中起草答案。

每个库代码库,ID即使Name被定义为主键,也会妨碍您。

如果您想保留Name作为主键,请您ID从 struct中删除该字段Component,然后尝试 method db.One

于 2017-07-13T21:08:03.997 回答