我正在为我的应用程序使用 beego/orm。这里我有 2 个模型
type ModelA struct {
Guid string `orm:"pk"`
FiledA string
}
type ModelB struct {
Guid string `orm:"pk"`
FiledB string
}
Run Code Online (Sandbox Code Playgroud)
我需要Save()
为每个结构添加一个方法。通常,我可以创建一个Base
结构并将其混合到ModelA
and 中ModelB
,但是 orm 不起作用。
有没有更好的解决办法?
编辑1:Save()
在此处提供代码以使问题更清楚
func (this *ModelA) Save() error {
o := orm.NewOrm()
guid := guidlib.Generate()
this.Guid = guid
_, err := o.Insert(this)
return err
}
func (this *ModelB) Save() error {
o := orm.NewOrm()
guid := guidlib.Generate()
this.Guid = guid
_, err := …
Run Code Online (Sandbox Code Playgroud) 我是一个尝试在路线上获得JSON响应的新手.
我有一个如此定义的控制器.
package controllers
import (
"github.com/astaxie/beego"
)
type ErrorController struct {
beego.Controller
}
type ErrorJson struct {
s string
d string
}
func (this *ErrorController) Get() {
var responseJson ErrorJson
responseJson = ErrorJson{
s: "asdf",
d: "qwer",
}
this.Data["json"] = responseJson
this.ServeJson()
}
Run Code Online (Sandbox Code Playgroud)
我的路由器定义为
beego.Router("/api", &controllers.ErrorController{})
Run Code Online (Sandbox Code Playgroud)
当我访问路径时,我得到一个没有任何属性的Empty JSON对象.
{}
Run Code Online (Sandbox Code Playgroud)
如果我用字符串替换json结构,我会得到一个响应.所以beego知道控制器和方法.
this.Data["json"] = "Hello World"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在我的应用程序中使用 golang 和 postgreSQL 版本 9.5.5。我使用“github.com/lib/pq”作为我的数据库驱动程序来连接到数据库。我的字段之一具有带时区的时间戳类型。我想更新到当前时间。所以我使用了以下代码:
注意:我使用 beego 作为我的框架并使用 orm 来计算我的查询。
_, err := o.Raw("UPDATE leave SET resultdate=? WHERE leaveid=?", time.Now(), leaveResult.LeaveId).Exec()
Run Code Online (Sandbox Code Playgroud)
当我执行此操作时,我收到以下错误:
"pq: invalid input syntax for type timestamp with time zone: \"09:24:29\""
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助。
我的数据库链接是域名而不是IP地址,我没有使用IP地址。下面是我的配置。
orm.RegisterDataBase("default", "mysql", "root:root@*******.aliyuncs.com:3308/dbname?charset=utf8")
Run Code Online (Sandbox Code Playgroud)
错误信息?
注册 db Ping
default
,网络 '***.mysql.rds.aliyuncs.com:3308' unknown 的默认地址必须有一个名为的注册数据库别名default
我使用以下代码创建了一个模型:
type UserProfile struct {
Id int `orm:"auto"`
Name string `orm:"size(100)"`
Email string `orm:"size(100)"`
Type string `orm:"size(30)"`
Admin bool
Car []*Car `orm:"reverse(many)"`
}
Run Code Online (Sandbox Code Playgroud)
有没有办法直接使用这种结构渲染表格?我认为需要考虑valid:required
验证,但我们如何控制表单渲染.
我之前用过Java,所以数据库表中有些列的类型是bit(1)
. 但是现在我想用 beego 来重建我的项目,我不想改变我的数据库表(需要做很多)。我在我的项目中使用 beego 的 orm。那么我应该使用哪种 Go 类型?
像这样的表和删除的列有问题:
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id | varchar(255) | NO | PRI | NULL | |
| created_time | datetime | YES | | NULL | |
| deleted | bit(1) | NO | | NULL | |
| updated_time | datetime | YES | | NULL | |
| icon_class | varchar(255) | YES | | …
Run Code Online (Sandbox Code Playgroud) 当我使用beego/orm操作postgresql数据库时,出现这样的错误“调用Time.In时缺少位置”。
代码示例
type dataTest struct {
Id int `pk:"auto"`
Data time.Time `orm:"auto_now;type(timestamp);null"`
}
local, _ := time.LoadLocation("UTC")
test_time, err := time.ParseInLocation("2006-01-02 15:04:05", "1111-01-25 14:27:07", local)
orm.DefaultTimeLoc = time.UTC
o,err := orm.NewOrmWithDB("postgres","default",db)
temp := new(dataTest)
temp.Id = 1
temp.Data = test_time
o.Update(temp)
Run Code Online (Sandbox Code Playgroud) 我正在研究 beego 应用程序。我试图在两台不同的机器上运行相同的代码。两者都是ubuntu。在一台机器上,它运行没有任何问题,但在另一台机器上我得到了以下错误日志。我对两者都有相同的文件组织,您认为为什么会发生这种情况?
controllers/EventController.go:18: this.ServeJson undefined (type *EventController has no field or method ServeJson)
controllers/EventController.go:24: this.ServeJson undefined (type *EventController has no field or method ServeJson)
controllers/EventController.go:30: this.ServeJson undefined (type *EventController has no field or method ServeJson)
controllers/default.go:14: c.TplNames undefined (type *MainController has no field or method TplNames)
Run Code Online (Sandbox Code Playgroud)
偶控制器:
package controllers
import (
"github.com/astaxie/beego"
"solardatabase/models"
"solardatabase/dao"
"solardatabase/services"
)
type EventController struct {
beego.Controller
}
func (this *EventController) ListEvents() {
res := struct{ Tasks []*models.Event }{dao.GetAllEvents()}
this.Data["json"] = res
this.ServeJson()
}
func …
Run Code Online (Sandbox Code Playgroud) 当我尝试将此json转换为时间时,出现错误
输出:
这里---------------------------------- 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC
生的:
{
"tenantID": "9e266e1a750e45f8862e83341a5d0970",
"startTime": "2019-4-1T11:45:26.371Z",
"endTime": "2019-4-10T11:45:26.371Z"
}
Run Code Online (Sandbox Code Playgroud)
控制器:
var bodyBytes []byte
raw := make(map[string]interface{})
jsons := make(map[string]interface{})
if h.Ctx.Request.Body != nil {
bodyBytes, _ = ioutil.ReadAll(h.Ctx.Request.Body)
}
json.Unmarshal(bodyBytes, &raw)
time1, err := time.Parse(time.RFC3339,raw["startTime"].(string));
time2, err := time.Parse(time.RFC3339,raw["endTime"].(string));
fmt.Println("HERE------------------------------------",time1,time2)
usageSingle, err := compute.UsageSingleTenant(raw["tenantID"].(string), time1, time2)
Run Code Online (Sandbox Code Playgroud) 文件上传已完成,但没有与我在html文件中尝试过的文件名相同的名称
<html>
<title>Go upload</title>
<body>
<form action="http://localhost:8080/receive" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file">
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并在beego/go receive.go
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func uploadHandler(w http.ResponseWriter, r *http.Request) {
// the FormFile function takes in the POST input id file
file, header, err := r.FormFile("file")
if err != nil {
fmt.Fprintln(w, err)
return
}
defer file.Close()
out, err := os.Create("/home/vijay/Desktop/uploadfile")
if err != nil {
fmt.Fprintf(w, "Unable to create the …
Run Code Online (Sandbox Code Playgroud)如何将一行设置为map[string]map[string]interface{}
不能在赋值中使用 s.ID(字符串类型)作为类型 map[string]interface {}
var row = make(map[string]map[string]interface{})
Run Code Online (Sandbox Code Playgroud)
列表服务器
func ListServers() (map[string]map[string]interface{}, error) {
listOptions := servers.ListOpts{}
pager := servers.List(GetClientCompute(), listOptions)
err := pager.EachPage(func(page pagination.Page) (bool, error) {
serverList, err := servers.ExtractServers(page)
if err != nil {
fmt.Println(err)
}
for _, s := range serverList {
row["ID"] = s.ID <---- error is here
row["Name"] = s.Name <---- error is here
if s.Addresses["public"] != nil {
for _, i := range s.Addresses["public"].([]interface{}) {
temp := i.(map[string]interface{})
if temp["version"].(float64) == 4 …
Run Code Online (Sandbox Code Playgroud) 我正在使用Golang编写Web应用程序,我使用的是beego框架.似乎框架具有为golang Web服务器返回的内部状态代码.
我想知道golang或beego中是否有任何方法,或其他工具可以让我控制返回浏览器的状态代码,比如说200或500或其他数字.
beego ×12
go ×12
api ×2
controller ×2
mysql ×2
orm ×2
file-upload ×1
frameworks ×1
json ×1
postgresql ×1
rest ×1
struct ×1
web ×1