小编mat*_*t.s的帖子

Golang Gorm与has-one一对多

我正在尝试通过构建一个小型原型订单管理应用来学习Go和Gorm.数据库是MySQL.通过简单的查询,Gorm一直很出色.然而,当试图获得涉及一对多与一对一关系的组合的结果集时,Gorm似乎不足.毫无疑问,我缺乏理解实际上是在做空.我似乎无法找到任何我想要完成的在线示例.任何帮助将不胜感激.

去结构

// Order
type Order struct {
    gorm.Model
    Status  string
    OrderItems   []OrderItem
}

// Order line item
type OrderItem struct {
    gorm.Model
    OrderID uint
    ItemID  uint
    Item    Item
    Quantity int
}

// Product
type Item struct {
    gorm.Model
    ItemName     string
    Amount       float32
}
Run Code Online (Sandbox Code Playgroud)

数据库表

orders
id | status
 1 | pending

order_items
id | order_id | item_id | quantity
 1 | 1        | 1       | 1
 2 | 1        | 2       | 4

items
id | item_name   | amount …
Run Code Online (Sandbox Code Playgroud)

one-to-one one-to-many go go-gorm

10
推荐指数
1
解决办法
7393
查看次数

你如何在Golangs Gorm做UUID?

我有以下型号......

type User struct {
    ID        string  `sql:"type:uuid;primary_key;default:uuid_generate_v4()"`
    FirstName string `form:"first_name" json:"first_name,omitempty"`
    LastName  string `form:"last_name" json:"last_name,omitempty"`
    Password  string `form:"password" json:"password" bindind:"required"`
    Email     string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"`
    Location  string `form:"location" json:"location,omitempty"`
    Avatar    string `form:"avatar" json:"avatar,omitempty"`
    BgImg     string `form:"bg_img" json:"bg_img,omitempty"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt time.Time
}
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方式,但这种方式会抛出(pq: relation "users" does not exist).我没有相关的模型,它只是一个模型.

我试过用...

func (user *User) BeforeCreate(scope *gorm.Scope) error {
    scope.SetColumn("ID", uuid.NewV4())
    return nil
}
Run Code Online (Sandbox Code Playgroud)

随着一个uuid lib,但也没有运气.

postgresql go go-gorm

9
推荐指数
5
解决办法
5793
查看次数

Golang gorm - 使用深度嵌套模型进行预加载

我有以下人为的例子:

type Top struct {
  ID     uint `gorm:"primary_key"`
  Name   string
  Middle []*Middle
}

type Middle struct {
  ID    uint `gorm:"primary_key"`
  TopID int
  Name  string
  Low   []*Low
}

type Low struct {
  ID       uint `gorm:"primary_key"`
  MiddleID int
  Name     string
  Bottom   []*Bottom
}

type Bottom struct {
  ID    uint `gorm:"primary_key"`
  LowID int
  Name  string
}
top := Top{
  Name: "Top",
  Middle: []*Middle{
    {
      Name: "Middle",
      Low: []*Low{
        {
          Name: "Low",
          Bottom: []*Bottom{
            {
              Name: "Bottom",
            },
          },
        },
      },
    },
  },
} …
Run Code Online (Sandbox Code Playgroud)

go go-gorm

6
推荐指数
1
解决办法
929
查看次数

用curl调用golang调用jsonrpc

我在golang上写了"hello world"rpc服务.它运行正常,并且jsonrpc客户端正在运行.但是我需要用curl发送请求,这个例子不起作用:

curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"id": 1, "method": "Test.Say", "params": [{"greet": "world"}]}' \
http://localhost:1999/_goRPC_
Run Code Online (Sandbox Code Playgroud)

去接受连接,但绝对没有结果:

curl: (52) Empty reply from server 
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

package main

import (
  "log"
  "os"
  "time"
  "net"
  "net/rpc"
  "net/rpc/jsonrpc"
)

// RPC Api structure
type Test struct {}

// Greet method arguments
type GreetArgs struct {
  Name string
}

// Grret message accept object with single param Name
func (test *Test) Greet(args *GreetArgs, result *string) (error) {
  *result = "Hello …
Run Code Online (Sandbox Code Playgroud)

curl http json-rpc go

4
推荐指数
2
解决办法
1782
查看次数

从共享库访问函数时出现内存不足的恐慌

我正在尝试使用 Go 构建一个示例共享对象库。代码编译(使用命令go build -o libsample.so -buildmode=c-shared .),成功构建了一个共享对象库 - 但是在通过 JNA(来自 Java)或 ctypes(来自 python)访问导出的方法时,我感到恐慌。我用 Go 写的代码是:

// package name: libsample.so
package main

import "C"
import "fmt"

//export Hello
func Hello(s string) {
    fmt.Println("Hello " + s + "!")
}

func main() {
}
Run Code Online (Sandbox Code Playgroud)

Hello从 Java访问此方法时:

import com.sun.jna.*;

public class sample {

    public interface GoSO extends Library {
        GoSO INSTANCE = (GoSO) Native.loadLibrary("sample" ,GoSO.class);
        void Hello(String s);
    }
    public static void main(String[] args) {
        GoSO.INSTANCE.Hello("World");
    }
}
Run Code Online (Sandbox Code Playgroud)

或来自 …

go cgo

3
推荐指数
1
解决办法
538
查看次数

生成的 go 文件的名称

我正在生成一个 Go 文件(包括构建版本等常量),以便这些常量可以在其他包中使用。我创建了一个小工具来创建文件,go generate但我正在尝试想一个合适的名称,以便

  • 很明显它是生成的,所以如果它丢失(在构建时),用户就会知道运行go generate

  • 然后我可以将文件添加到 .gitignore

我的第一个猜测是这样的version_GENERATED.go

我应该注意哪些约定或更好的建议?

code-generation naming-conventions go

3
推荐指数
1
解决办法
886
查看次数