我正在try 在PostgreSQL服务器中创建一条记录.我收到的请求是多部分格式的文件数据.在将文件上传到我的端之后,我调用Gorm.Create,但它抛出一个错误.

当我注释掉文件上传部分时,错误消失了,但我需要上传文件.

以下是我的控制器部分:

func (pc ProductController) Create(c *gin.Context) {

    var product migrations.Product

    if err := c.Bind(&product); err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "İşlem başarısız. Lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. Hata kodu: PD-CRT-01"})
        return
    }

    if product.Name == "" {
        c.JSON(400, gin.H{"error": "Name is required", "message": "İşlem başarısız. Lütfen Ad Alanını Boş Bırakmayınız. Hata kodu: PD-CRT-02"})
        return
    }

    if product.Price == 0 {
        c.JSON(400, gin.H{"error": "Price is required", "message": "İşlem başarısız. Lütfen Fiş Değeri Alanını Boş Bırakmayınız. Hata kodu: PD-CRT-03"})
        return
    }
    if product.ID != 0 {
        c.JSON(400, gin.H{"error": "Remove ID field", "message": "Lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. Hata kodu: PD-CRT-ID-01"})
        return
    }

    file, err := c.FormFile("image")
    if err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Lütfen Resim Ekleyiniz. Hata kodu: PD-CRT-IMG-01"})
    }
    fileName := time.Now().Format("20060102150405") + "-" + strings.Split(file.Filename, ".")[0] + "." + strings.Split(file.Filename, ".")[1]
    dst := fmt.Sprintf("./public/images/%s", fileName)
    err = c.SaveUploadedFile(file, dst)
    if err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. Hata kodu: PD-CRT-IMG-02"})
        return
    }

    product.Image = &migrations.File{
        Path:      fileName,
        Extension: strings.Split(file.Filename, ".")[1],
    }
    log.Println(product)
    err = db.Conn.Create(&product).Error
    if err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "İşlem başarısız. Lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. Hata kodu: PD-CRT-04"})
        return
    }

    c.JSON(http.StatusCreated, gin.H{"message": "Ürün başarıyla eklendi.", "data": product})
    return
}

我的请求是:

request

错误:

{
    "error": "strconv.ParseInt: parsing \"products\": invalid syntax; strconv.ParseInt: parsing \"products\": invalid syntax",
}

以下是我的 struct :


type Order struct {
    ID         uint       `gorm:"primarykey" json:"id"`
    UserID     int        `gorm:"index" json:"user_id"`
    RoomNo     int        `gorm:"comment:oda_no" json:"room_no"`
    IsDone     bool       `gorm:"default:false" json:"is_done"`
    StatusCode int        `gorm:"default:0" json:"status_code"`
    CreatedAt  time.Time  `json:"created_at"`
    UpdatedAt  time.Time  `json:"updated_at"`
    DeletedAt  time.Time  `gorm:"index" json:"deleted_at"`
    Products   []*Product `gorm:"many2many:orders_products" json:"products,omitempty"`
}

type Product struct {
    ID        uint      `gorm:"primarykey" json:"id" form:"id"`
    Name      string    `gorm:"type:varchar(255)" json:"name" form:"name"`
    Price     float64   `gorm:"type:decimal(10,2)" json:"price" form:"price"`
    IsActive  bool      `gorm:"default:true" json:"is_active" form:"isActive"`
    Image     File      `gorm:"polymorphic:Module" json:"image,omitempty"`
    CreatedAt time.Time `json:"created_at" form:"createdAt"`
    UpdatedAt time.Time `json:"updated_at" form:"updatedAt"`
    DeletedAt time.Time `gorm:"index" json:"deleted_at"`
}

type OrdersProduct struct {
    OrderID   int `gorm:"index" json:"order_id"`
    ProductID int `gorm:"index" json:"product_id"`
    Count     int `gorm:"default:0" json:"count"`
}


type File struct {
    ID         uint      `gorm:"primarykey" json:"id"`
    CreatedAt  time.Time `json:"created_at"`
    UpdatedAt  time.Time `json:"updated_at"`
    DeletedAt  time.Time `gorm:"index" json:"deleted_at"`
    Path       string    `gorm:"type:varchar(255)" json:"path"`
    Extension  string    `gorm:"type:varchar(255)" json:"extension"`
    ModuleID   int       `gorm:"type:integer" json:"module_id"`
    ModuleType int       `gorm:"type:integer" json:"module_type"`
}


推荐答案

判断文件 struct 的单位类型.Strcom.ParseInt()将字符串转换为值.我认为,模块ID、模块类型或两者都必须是字符串.

Postgresql相关问答推荐

如何在PostgreSQL中对深度嵌套的jsonb属性创建索引

对 VOLATILE 函数的调用会 destruct SELECT 语句的原子性

将数组的所有元素循环到jsonb中并修改值

如何使 Postgres 优化引擎具有确定性

订阅标签保存在哪个表中?

如何防止 PDO 将问号解释为占位符?

PostgreSQL 中基于时间戳的移动平均线

从左连接更新 Postgres

在 postgres 中Decode解码相似的函数

从 PostgreSQL 中的时间戳获取日期

PostgreSQL:使用 psql 命令行实用程序时 Windows 上的编码问题

从没有行的计数中获取 0 值

如何在 postgres 中使用 json_populate_recordset 解析 json

Django 1.9.2 AssertionError:database connection isn't set to UTC

如何为 Postgres psql 设置时区?

PostgreSQL 中是否有类似 zip() 函数的东西,它结合了两个数组?

如何在Postgres中分组并返回总和行

删除空行

判断 PostgreSQL 中的角色是否设置了密码

如何在 JPA 中使用 Postgres JSONB 数据类型?