Найти один в Болт

У меня есть проект 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,

Другие вопросы по тегам