问题标签 [go-fiber]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1257 浏览

go - Go Fiber 不在本地主机上运行

我正在使用这个 Web 框架进行 Go:https ://github.com/gofiber/fiber

我想运行他们给出的名为“hello world”的基本示例

我复制了代码并将其放在一个名为main.go

在我运行脚本之前,我还确保使用go get -u github.com/gofiber/fiber.

然后运行go run main.go文件运行但它不在我的本地主机上运行并告诉我它正在运行HOST[::]

我怎样才能让它运行localhost而不是HOST[::]. 我试图查看它是否在我的本地主机上,但它根本不存在。

这是我得到的输出

0 投票
1 回答
74 浏览

database - Go 中的继承使用或仅处理多种用户类型

我想学习乐趣并了解 Web 应用程序,我计划使用 Fiber 框架,可能使用 Mysql 或 postgres 作为数据库。我的问题有两个。

什么是多种用户类型的最佳实践。我知道 Go 并不是真正的 OOP 语言(我正在学习的第一语言不是 OOP)。很难弄清楚如何。因为我将有 2 个用户 1 个培训另一个客户。他们将共享一些类似的字段,即:姓名、电子邮件、密码等,以及一些对其他人来说是独一无二的。他们还将有一对多的关系(培训师可以有很多客户)。我理解 orms 可以处理这种关系。但是我将如何构建代码。我会拥有 2 个包含所有字段的模型结构,还是两个都派生自的接口。

我想我的第二部分更像是一个数据库问题。当我通常构建具有多种用户类型的应用程序时,它通常是由用户表上的 isAdmin 字段控制的,但由于用户类型需要不同的信息但有些相似,因此数据库设计的最佳实践是什么。我在想用户、培训师和客户表 3 个表。其中客户端和培训师表与用户表有 fk。这甚至是个好主意吗?

0 投票
1 回答
139 浏览

go - 将一个 API 请求的负载传递给 API 调用 2

我喜欢创建两个 API,其中请求在一个 API 中获取信息,并在另一个 API 调用中插入到数据库。我怎么能在 Fiber 中实现这一点。

考虑以下代码块

如何在 Go Fiber 框架中使用 POST 调用第二个函数,以便我将有效负载传递给另一个 API。

0 投票
0 回答
330 浏览

go - 带有 MySQL 驱动程序的 Golang

最近几天一直在学习golang,但是我很沮丧,因为我正在尝试制作一个简单的CRUD api,但我无法创建一个简单的用户。

我正在使用带有 mysql 驱动程序的 golang sql 的 Fiber(非常类似于 Express.js)。

这是我的整个处理程序:

我在做我不应该做的事吗?

(顺便说一句,这几乎是我的全部代码,我删除了“错误”处理)

祝你们有美好的一天!

0 投票
1 回答
1898 浏览

go - 更新方法不更新零值

原始问题

在 GORM 中使用该Update方法时,不会保存新数据。即我想设置一个boolfrom trueto false,但即使在Update方法之后它仍然保持真实。

在该方法的描述中有一条警告:“使用结构更新时警告,GORM 不会更新零值的字段”

由于我使用结构来更新并且false是 的零值bool,这似乎是预期的行为,但我看不出有任何理由这样做以及如何克服这一点。

解决方案总结

new首先,正如建议的那样,我在实例化结构时省略了关键字。然后,我使用了一个辅助函数(从这里开始)将结构转换为映射,同时将 json 别名作为键:

然后我循环遍历数据切片中的每个元素,以便对其进行转换并一一更新:

*在这个例子中,错误处理明显减少了。

0 投票
1 回答
321 浏览

go - Unable to preload clause.Associations

I am using GORM in combination with Fiber. When querying all users with preloaded clause.Associations I get the following error:

What does that mean? Without the preload of clause.Associations it works normally and but it does not show one-to-one associations.

0 投票
1 回答
423 浏览

go - 对象的部分更新

我想User在我的 Fiber/gorm 后端为我的对象启用更新功能。当我使用该函数一起更新所有字段时,它工作正常Save。但是,当我在更新请求中没有所有字段(例如,只有Birthday字段而不是Phone字段)时,它会用它们各自的空值覆盖其余字段。

当我将行更改record := db.Save(&user)

我收到Update无法处理接口映射的错误:sql: converting argument $10 type: unsupported type map[string]interface {}, a map

更新 1: 提到的 StructToMap 函数如下所示:

更新 2: 用户对象看起来像:

0 投票
1 回答
792 浏览

sqlite - 在 Go 中增加结构值

我希望看到visits每个GET请求的增量,/foo但它仍然是1. 我在这里做错了什么?

0 投票
1 回答
310 浏览

go - 加载样式表时找不到 GET 404

我在使用 Go Fiber 的静态文件服务器时遇到问题。我想加载一个在模板中使用的 CSS 样式表。模板本身工作正常。

我的文件结构在哪里:(其中 a -> 表示它是一个目录)

main.html 的内容是:

文件 ./views 肯定存在,因为当我将它添加到 main 时,没有任何内容被打印到日志中:

当我在 localhost 上运行它并使用检查元素查看网络时, http: //127.0.0.1 :3000/static/layouts/main.css被正确查询但抛出 404 错误。如果我去http://127.0.0.1:3000/static我会收到一条消息说Cannot GET /static。我认为这可能是文件路径问题,但我尝试了许多不同的 .s、/s 等组合,但一无所获。

如何解决这个 404 错误?

0 投票
1 回答
87 浏览

go - 如何缩小此代码并合并 if 和 else 条件

if和else条件都遵循相同的代码流程,只是functions和struct不同,如何合并,让代码更小。我的意思是:

不能触摸 h.Repo.GetAllLatestProducts 或 h.Repo.GetLatestProductsByCategory 因为它们是外部函数。类型安全也很重要。

可以有多个功能,如特色产品,新产品,我想制作一个通用函数,根据动态选择的 sql 函数将产品返回为 json。


您遇到了问题,具有相同代码结构的数十个函数很糟糕,至少对我而言,它的可读性与否无关紧要,它只是重复的复制/粘贴,没有任何意义,主要是仅使用函数名称进行复制/粘贴/SQLC 生成函数名和结构名变化,其余代码流程相同。

SQLC 根据 SQL 查询生成自动代码,现在编写重复代码只是将结果转换为 JSON 并将其返回给客户端是浪费时间。可能有几十个 SQL 函数来返回最新产品、特色产品、类别中的产品、愿望清单产品、等等等等。

所有网站都了解产品结构,但 SQLC 返回不同的结构,因此没有单一的 dbResult 类型的东西。无论如何映射不是什么大事,使用反射我们可以在映射函数中检查具有相同名称的字段,并将 SQL.NullString 转换为字符串等。

真正的问题是我的 if/else 语句。您已经在不同的函数中移动了代码,但对我来说,在这种情况下它没有意义。因为web handler无论如何都要检查请求是否有效,是否定义了category,然后检查category是否为0,然后调用不同的函数,然后得到结果并返回给客户端。对于单个函数,它可能看起来更好,但对于实际生产,它会让事情变得更糟,而不是单个函数和 if/else 块,现在每个 API 都有 3 个函数。

我正在寻找它只是将 SQLC 结果映射到路由处理程序。代码流程始终相同,只是函数名称和结构名称发生变化。如何使其动态化,以便在我的 http 处理程序中,我可以简单地编写:

然后根据 c.Query("category") 中的类别值,SQLCResult 将自动调用 GetAllFeaturedProducts 或 GetFeaturedProductsByCategory。类似于函数作为回调的东西,但函数签名不同,这是一个问题。

映射函数不是必需的,因为在 SQLCResult 中,我们可以执行以下操作:

这将创建字段名称和索引的映射,并传递 dbresult 行,它将使用反射将其转换为 Product 结构并返回相同的内容,即在修改其字段后返回第一个参数作为结果。

我仍在寻找如何编写 SQLCResult 函数,将 SQLC 函数名称作为输入,然后返回结果,或者可以通过将 Product{} 结构本身放在 SQLCResult 函数中来使其更通用,例如:

SQLCResult 将根据布尔条件调用 GetAllFeaturedProducts 或 GetFeaturedProductsByCategory,并将函数结果映射到作为第一个参数传递的结构,然后返回该结构。

或者可能是这样的最终目标: