我正在用MySQL构建一个简单的Go REST API,在涉及稍微复杂一些的查询时,我在查询数据时遇到了一些麻烦。我有2种模式:书籍和流派。 go中的模型定义如下:
type Book struct {
ID string `json:"id"`
Title string `json:"title"`
Genre *Genre `json:"genre"`
Price float64 `json:"price"`
}
type Genre struct {
ID string `json:"id"`
Name string `json:"name"`
}
在SQL中,book表具有id,title,price和id_genre字段,这是一个外键。
困惑在于执行返回行的选择之后,我不确定在遍历行时如何将信息添加到流派字段中
result, err := database.DB.Query("SELECT a.id_book, a.title, a.price, b.name, b.id_genre FROM bookshelf.books a JOIN bookshelf.genres b ON a.id_genre = b.id_genre")
for result.Next() {
var book models.Book
// ????
err := result.Scan(&book.ID, &book.Title, &book.Price, &book.Genre )
if err != nil {
panic(err.Error())
}
// ...more code
}
很明显,result.Scan方法是错误的,但是我不确定该如何处理类型。
这是正确的方法还是我完全错误的方法?