小编Nla*_*ALD的帖子

Gorm AutoMigrate() 和 CreateTable() 不起作用

我已经在这里和谷歌上浏览过相关问题。

我正在使用 Gorm 和 SQLite3。

每当我尝试在结构上运行任一函数时,都会收到错误。当我调试并单步执行时,我看到表名称是“”。Gorm 没有获取我的结构名称,即 models.UserAuth。如果我调用 DropTable(models.UserAuth{}) 显示没有名为 user_auth 的表(但至少它找出了表名称)。当我浏览数据库时,当然没有表。

我的结构是

type UserAuth struct {
    gorm.Model
    ProfileID int      `gorm:"not null" json:"profile_id"`
    Username  string   `gorm:"size:20;unique_index" json:"username"`
    Email     string   `gorm:"type:varchar(100);unique_index" json:"email"`
    Password  string   `gorm:"not null" json:"password"`
    Remember  bool     `gorm:"not null" json:"remeber"`
    TwoFA     bool     `gorm:"not null" json:"twofa"`
    Access    int      `gorm:"not null" json:"access"`
    State     int      `gorm:"not null" json:"state"`
    LastSeen  string   `gorm:"not null" json:"lastseen"``
}
Run Code Online (Sandbox Code Playgroud)

我的常见迁移功能是:

func (d *Database) Migrate(m interface{}) {
    logEntry := fmt.Sprintf("Auto Migrating %s...", reflect.TypeOf(m))

    //d.db.DropTable(&models.UserAuth{})
    //d.db.CreateTable(&models.UserAuth{})

    // Do it …
Run Code Online (Sandbox Code Playgroud)

schema migrate go go-gorm

5
推荐指数
1
解决办法
2万
查看次数

如何访问 gorm.Model.ID?

所以 gorm.Model 提供了一些基本属性或字段:

ID        uint       `json:"-" gorm:"primary_key"`
CreatedAt time.Time  `json:"-"`
UpdatedAt time.Time  `json:"-"`
DeletedAt *time.Time `json:"-" sql:"index"`
Run Code Online (Sandbox Code Playgroud)

你可以这样使用它

type User struct {
  gorm.Model
  Name         string
  Email        string  `gorm:"type:varchar(100);unique_index"`
  Role         string  `gorm:"size:255"` // set field size to 255

}
Run Code Online (Sandbox Code Playgroud)

所以当我在我的模型控制器上工作以进行删除(或任何我需要比较 ID 的地方)

这不起作用,给我一个错误:

c.Ctx.DB.Delete(&models.Address{ID: id})
Run Code Online (Sandbox Code Playgroud)

github.com/NlaakStudios/PASIT/models 类型的结构文字中的未知字段“ID”。地址

而且,这不起作用,给我一个错误:

 c.Ctx.DB.Delete(&models.Address{gorm.Model.ID: id})
Run Code Online (Sandbox Code Playgroud)

struct initializer id int 中的无效字段名称 gorm.Model.ID

如果我删除 gorm.Model 并在每个模型中自己定义字段......它就可以工作。

type User struct {
ID        uint       `json:"-" gorm:"primary_key"`
CreatedAt time.Time  `json:"-"`
UpdatedAt time.Time  `json:"-"`
DeletedAt *time.Time `json:"-" sql:"index"`
  Name         string
  Email        string …
Run Code Online (Sandbox Code Playgroud)

model go go-gorm

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

如何使用sed用shell变量替换文件中的字符串

Geez,我试过MAN页面,这里有几个帖子.我想我只是愚蠢因为我',而不是得到它.

我有一个javascript文件,其中包含{VERSION}和{DISTRO},其中变量字符串值应该像这样替换.

var MyObject = {

    /**
     * @property {string} VERSION Holds the current version of the framework
     */
    VERSION:    '{VERSION}',
    /**
     * @property {string} DISTRO Holds the distrobution tag of the framework
     */
    DISTRO:     '{DISTRO}'
};
Run Code Online (Sandbox Code Playgroud)

这个命令运行我的shell.无论我做什么,它都不起作用或我得到错误.

VERSION="0.9.0"
DISTRO="Developer"
OUT_CAT=$OUT_CAT_DEBUG


${OUT_CAT} | sed -i "s/{VERSION}/\$VERSION/" -e "s/{DISTRO}/\$DISTRO/" ${OUT_CAT}
#sed -i "s/{VERSION}/$VERSION/" -e "s/{DISTRO}/$DISTRO/" ${OUT_CAT}
Run Code Online (Sandbox Code Playgroud)

那么我在哪个方面?看起来它应该非常简单直接.

[编辑]这是脚本的三脚版,这样你就可以告诉我在做什么以及变量来自哪里.

#!/bin/bash
VERSION="0.9.0"

DEV_DIR=../lib
DIST_DIR=../dist
WEB_DIR=/d/Android_Dev/GitHUB/WEB/h5c3/dist

OUT_CAT_DEBUG=h5c3.debug.cat
OUT_MIN_DEBUG=h5c3.debug.min
OUT_ZIP_DEBUG=$DIST_DIR/h5c3.debug.gz

OUT_CAT_RELEASE=$DIST_DIR/h5c3.release.cat
OUT_MIN_RELEASE=h5c3.release.min
OUT_ZIP_RELEASE=$DIST_DIR/h5c3.release.gz

echo Building Version "$1"...

if [ "$1" == debug ]; then
    DISTRO="Developer" …
Run Code Online (Sandbox Code Playgroud)

linux shell sed

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

标签 统计

go ×2

go-gorm ×2

linux ×1

migrate ×1

model ×1

schema ×1

sed ×1

shell ×1