Я не могу добавить правильный тег к вопросу, но я использую библиотеку Storm (https://github.com/asdine/storm), и я не могу заставить q.In работать, возможно, я что-то делаюнеправильно, или, может быть, я обнаружил ошибку в библиотеке, может кто-нибудь помочь, пожалуйста? Я хотел опубликовать весь рабочий код, но похоже, что Stackoverfow больше не позволит мне, так что просто опубликовать оскорбительную часть.
Редактирование для большей ясности в соответствии с запросом: q.In берет фрагмент и возвращает совпадающие объекты в соответствии с документацией, но в моем случае ничего не возвращает и завершается с ошибкой «not found». Выполнение db.Select().Find(&a)
вместо этого работает как положенои возвращает все без какой-либо фильтрации. Ожидаемый результат - только один объект, последний сохраненный Foo, тот, у которого есть Title = Doler из-за соответствующего тега.
package main
import (
"fmt"
"log"
"github.com/asdine/storm"
"github.com/asdine/storm/q"
)
type Foo struct {
Id int64 `storm:"id,increment"`
Title string `storm:"index"`
Tags []string `storm:"index"`
}
func main() {
if db, e := storm.Open("db/test.db"); e != nil {
log.Fatal("Couldn't open database")
} else {
defer db.Close()
db.Save(&Foo{Title: "Lorem", Tags: []string{"foo", "bar"}})
db.Save(&Foo{Title: "Ipsum", Tags: []string{"foo", "bax"}})
db.Save(&Foo{Title: "Doler", Tags: []string{"quux", "baz"}})
{
var a []Foo
if e := db.Select(q.In("Tags", []string{"quux"})).Find(&a); e != nil {
panic(e) // yikes, doesn't work!
}
}
}
}