我无法在问题中添加正确的标签,但是我使用的是Storm库(https://github.com/asdine/storm),但似乎无法获得q.In的效用,也许我正在做某事错误,或者我在库中遇到错误,有人可以帮忙吗?我想发布整个工作代码,但看起来Stackoverfow不再允许我了,所以只发布有问题的部分。
根据要求进行更清晰的编辑:q.In进行切片,并根据文档返回匹配的对象,但在我看来,它不返回任何内容,并且失败并显示“未找到”错误。相反,执行db.Select().Find(&a)
可以按预期工作,并返回所有内容而无需任何过滤。预期的输出只是一个对象,最后一个Foo被保存,由于匹配的标签,该对象的标题为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!
}
}
}
}