为了账号安全,请及时绑定邮箱和手机立即绑定

如何在控制器中导入模型

如何在控制器中导入模型

Go
慕盖茨4494581 2022-09-19 21:28:23
下面是我的代码的模型。package modelstype Goal struct {  Id        int    `json:"id"`  Title     string `json:"title"`  Status        bool   `json:"status"`}当我在控制器中导入模型包并想要使用时,它会给我一个错误。package controllersimport (    "strconv"    "github.com/gofiber/fiber/v2"    "github.com/RohitKuwar/go_fiber/models"  //error:"github.com/RohitKuwar/go_fiber/models" imported but not used)var goals = []Goal{     //error:undeclared name: Goal    {        Id:        1,        Title:     "Read about Promises",        Status:    "completed",    },    {        Id:        2,        Title:     "Read about Closures",        Status:    "active",    },}func GetGoals(c *fiber.Ctx) error {    return c.Status(fiber.StatusOK).JSON(goals)}func CreateGoal(c *fiber.Ctx) error {    type Request struct {        Title   string  `json:"title"`        Status  string  `json:"status"`    }    var body Request    err := c.BodyParser(&body)    // if error    if err != nil {        return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{            "message": "Cannot parse JSON",            "error":   err,        })    }    // create a goal variable    goal := &Goal{     //error:undeclared name: Goal        Id:        len(goals) + 1,        Title:     body.Title,        Status:      body.Status,    }但是当我在下面的控制器中编写模型时,一切都很正常。import (    "strconv"    "github.com/gofiber/fiber/v2")type Goal struct {  Id        int    `json:"id"`  Title     string `json:"title"`  Status    string  `json:"status"`}var goals = []Goal{    {        Id:        1,        Title:     "Read about Promises",        Status:    "completed",    },    {        Id:        2,        Title:     "Read about Closures",        Status:    "active",    },}func GetGoals(c *fiber.Ctx) error {    return c.Status(fiber.StatusOK).JSON(goals)}但我不想在控制器代码中使用模型代码。我想将模型保留在模型文件夹中。我想将模型和控制器保存在单独的文件夹中。我认为我在控制器中导入模型包或模型中导入控制器包时做错了什么。我不明白我该怎么做。你们能帮帮我吗?提前感谢您。
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您的文件看起来如何?我试图使用以下目录结构处理您的代码,模块条目看起来像go.modgo.modmodule rishabh96b/go_fiber


➜  go_fiber tree .

.

├── controllers

│   └── mycontroller.go

├── go.mod

├── go.sum

└── models

    └── goals.go

在我的情况下,在控制器中导入模型包是成功的。这是文件的外观mycontroller.go


package controllers


import (

    . "rishabh96b/go_fiber/models"


    "github.com/gofiber/fiber/v2"

)


var goals = []Goal{ //error:undeclared name: Goal

    {

        Id:     1,

        Title:  "Read about Promises",

        Status: "completed",

    },

    {

    Id:     2,

    Title:  "Read about Closures",

    Status: "active",

    },

}


func GetGoals(c *fiber.Ctx) error {

    return c.Status(fiber.StatusOK).JSON(goals)

}


func CreateGoal(c *fiber.Ctx) error {

    type Request struct {

        Title  string `json:"title"`

        Status string `json:"status"`

    }


var body Request


err := c.BodyParser(&body)


// if error

if err != nil {

    return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{

        "message": "Cannot parse JSON",

        "error":   err,

    })

}


// create a goal variable

goal := &Goal{ //error:undeclared name: Goal

    Id:     len(goals) + 1,

    Title:  body.Title,

    Status: body.Status,

    }

}

P.S:前面的意味着我不必使用我在这里使用的结构的包名称。简而言之,我可以简单地使用而不是."rishabh96b/go_fiber/models"Goal{}models.Goal{}


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信