beego 模型已注册但未找到

beego models registered but not found

我正在尝试编写我的第一个 beego 网络应用程序,我正在尝试注册一些模型,我在 models/model.goinit() 函数中注册了它们,但是当我 运行 命令 bee run,我收到以下错误: no Model found, need register your model

main.go:

package main
import (
   "fmt"
    _ "test_blog/routers"
   "time"

   _ "github.com/lib/pq"

   "github.com/astaxie/beego"
   "github.com/astaxie/beego/orm"
)

func init() {
    orm.RegisterDriver("postgres", orm.DRPostgres)

    maxIdle := 30
    maxConn := 30
    orm.RegisterDataBase(
        "default",
        "postgres", 
        "postgres://user:password@localhost/test_db", maxIdle, maxConn
    )

    orm.DefaultTimeLoc = time.UTC
}

func main() {
    // Database alias.
    name := "default"

    // Drop table and re-create.
    force := false

    // Print log.
    verbose := false

    // Error.
    err := orm.RunSyncdb(name, force, verbose)
    if err != nil {
        fmt.Println(err)
    }

    beego.Run()
}

注意: force & verbose 都在 运行ning bee run 之前设置为 true第一次。

models.go:

package main

import "github.com/astaxie/beego/orm"

type User struct {
    Name  string
    Posts []*Post `orm:"reverse(many)"`
}

type Post struct {
    Title   string    `orm:"size(50)"`
    Text    string    `orm:"size(4000)"`
    Created time.Time `orm:"auto_now_add;type(datetime)"`
    Updated time.Time `orm:"auto_now;type(datetime)"`
    Author  *User     `orm:"rel(fk)"`
}

func init() {
    orm.RegisterModel(new(User), new(Post))
}

试试这个:

  1. 在models.go中,将package main更改为package models
  2. 在main.go中添加import _ "test_blog/models"