1. GORM Dialects

    GORM 原生支持 sqlite, mysql, postgres 和 mssql。

    有一些关系型数据库与 mysql 和 postgres 语法兼容,因此你可以直接使用这两个数据库的 dialect 。

    1.2. Dialect 专属的数据类型

    GORM 支持 PostgreSQL 专有的字段类型:

    • jsonb
    • hstore

    你可以这样子使用 Model:

    1. password := "0654857340"
    2. metadata := json.RawMessage(`{"is_archived": 0}`)
    3. Body: "This is a test document",
    4. Metadata: postgres.Jsonb{ metadata },
    5. Secrets: postgres.Hstore{"password": &password},
    6. // 将范例数据写入数据库
    7. db.Create(&sampleDoc)
    8. // 读取数据,来检测是否正确写入
    9. resultDoc := Document{}
    10. metadataIsEqual := reflect.DeepEqual(resultDoc.Metadata, sampleDoc.Metadata)
    11. secretsIsEqual := reflect.DeepEqual(resultDoc.Secrets, resultDoc.Secrets)
    12. fmt.Println("Inserted fields are as expected:", metadataIsEqual && secretsIsEqual)