如何在控制器中导入模型

恶作剧

以下是我的代码模型。

package models

type Goal struct {
  Id        int    `json:"id"`
  Title     string `json:"title"`
  Status        bool   `json:"status"`
}

当我在控制器中导入模型包并想要使用时,它会给我一个错误。

package controllers

import (
    "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)
}

但我不想在控制器代码中使用模型代码。我想将模型保存在模型文件夹中。我想将模型和控制器保存在单独的文件夹中。我认为在控制器中导入模型包或在模型中导入控制器包时我做错了什么。我不明白我该怎么做。你们能帮帮我吗?先感谢您。

里沙巴·博拉

你的go.mod文件看起来怎么样?我尝试使用以下目录结构处理您的代码,其中模块条目go.mod看起来像module 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,
    }
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在控制器中导入模型

如何在控制器Laravel中导入自定义类?

Laravel:如何在控制器类中导入外部库

如何在AngularJS 1.6组件控制器中导入类?

如何在 ROS 工作台中的简单 python 脚本中导入 Webots 控制器库

如何在Ros-python脚本中导入Webots控制器

如何使用“require”在 NestJS 控制器中导入 JSON?

如何在推送通知中导航以查看控制器

如何在XCTest for Swift中导入模型

如何在控制器中包括不是模型的类

如何在控制器的模型中获取变量?

如何在Sails中访问控制器外部的模型

如何在更新控制器中加载多个模型

如何在控制器中检查模型数据打印?

如何在 Ember 控制器中访问模型数据

如何在控制器中导入把手模板并将其放置在另一个把手模板中

在 Laravel 控制器中导入 Laravel 喜欢的包控制器

如何在浏览器控制台中导入 javascript 文件?

如何从控制器访问模型?

如何从控制器访问模型类?

如何在控制器中访问另一个模型中的角度模型?

如何在Rails 4的其他模型的控制器中使用模型的范围

如何在laravel 4.1中的控制器中调用模块的模型和控制器文件

如何在Yii2的控制台控制器中使用模型?

如何在 sequelize index.ts 文件中导入模型

如何在 Typescript (Angular) 中导入 swagger 模型桶文件

如何在rspec中测试控制器导入/导出csv文件的操作?

如何在Rails中将数据从一个模型/控制器发送到另一个模型/控制器

Laravel 5.2:如何在控制器中获取模型属性