Найти один в Болт
У меня есть проект Golang, и я использую Bolt в качестве базы данных. Я нашел и начал использовать этот проект для обработки соединений и операций над базой данных. Моя текущая проблема заключается в том, что я не могу выполнить поиск по одному полю и получить один результат.
Мое определение структуры в Голанге:
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
}
Сначала я знаю, что странно иметь один идентификатор поля и имя поля с идентификатором тега, дело в том, что я хочу, чтобы имя было идентификатором и, возможно, ключом. Я сделал несколько вставок, и все в порядке, я даже восстановил все значения, и это работало отлично. Теперь я хочу получить один элемент по имени, у меня есть это:
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)
1 ответ
Составление ответа из моего комментария.
За библиотечную кодовую базу, ID
мешает, хотя Name
определяется как первичный ключ.
Если вы хотите сохранить Name
в качестве первичного ключа, пожалуйста, удалите поле ID
из структуры Component
а затем попробуйте метод db.One
,