1

我正在尝试构建一个小型 Web 应用程序。我在理解如何查询数据库并在 HTML 视图中显示结果时遇到了麻烦。

我已经有一个名为“shop”的 PostgreSQL 数据库和一个名为“books”的表。此表包含字段“id”、“booknum”、“bookname”、“author”和“category”。

我设法获得了一个数据库连接并创建了模型结构。现在我不知道如何为查询创建函数 ie*("SELECT * FROM books;") 并在索引视图文件中显示结果。

通过干净的狂欢构建,我添加了以下代码。

应用程序/控制器/app.go

package controllers

import (
    "github.com/revel/revel"
    "github.com/test/testapp/app/models"
)

type App struct {
    *revel.Controller
    GormController
}

func (c App) Index() revel.Result {
    books := models.Books{}
    return c.Render(books)
}

应用程序/控制器/gorm.go

package controllers

import (
    "github.com/jinzhu/gorm"
    _ "github.com/lib/pq" 
    r "github.com/revel/revel"
    "github.com/test/testapp/app/models"
)

var Gdb *gorm.DB

func initDB() {
  Gdb, err := gorm.Open("postgres", "host=localhost user=username dbname=shop sslmode=disable password=password")
  if err != nil {
   panic("failed to connect database")
 }
 Gdb.AutoMigrate(&models.Books{})
 }

 type GormController struct {
    *r.Controller
    Txn *gorm.DB
 }

应用程序/控制器/init.go

package controllers

import "github.com/revel/revel"

func init() {
    revel.OnAppStart(initDB) // invoke InitDB function before
 }

应用程序/模型/books.go

package models

type Sched struct {          // example user fields
    Id                   int64
    Booknum              string `sql:"type:VARCHAR(255)"`
    Bookname             string `sql:"type:VARCHAR(255)"`
    Author               string `sql:"type:VARCHAR(255)"`
    Category             string `sql:"type:VARCHAR(255)"`
}

任何反馈或帮助将不胜感激..谢谢

4

1 回答 1

0

首先,您可以在 app.go 文件中使用它

result := c.DB.Find(books)
return c.RenderJSON(result)

第一行查询所有书籍的数据库(与 select * from books 相同;)第二行返回 JSON,允许您验证是否获得了预期的数据。

下一步是获取结果并将其应用于模板。

于 2018-08-01T22:46:51.973 回答