如何在Golang(beego)模型中避免生成默认的主键ID?

huangapple go评论95阅读模式
英文:

How to avoid generating Default primary key id in Golang (beego) model?

问题

我正在尝试创建一个 REST API。我已经有了一个数据库。我想创建一个与数据库表相关联的结构体。但是当我运行项目时,beego会自动为注册的模型创建一个“id”主键。如何在beego中避免这个问题?

我的代码示例:

模型:
type Person struct {
PersonId string json:"person_id"
name string json:"name"
email string json:"email"
}

问题:在使用beego时遇到需要一个主键字段的问题
它在数据库表中创建了一个默认为null值的id字段。

注意:person_id是person表中的主键。

英文:

I am trying to create a rest API. I have already a database. I want to create a struct linked to a database table. But when I run the project beego automatically creates an "id" primary key for the model registered. How to avoid this in beego?

My code example:

Model:
type Person struct {
    PersonId string `json:"person_id"`
    name string `json:"name"`
    email string `json:"email"`
}

Problem: Encounter need a primary key field when using beego
It creates an id field in db table with default null value.

Note: person_id is the primary key in person table.

答案1

得分: 1

如果你想让Beego的ORM使用不同的主键,你可以这样做:

type Person struct {
    PersonId int64 `orm:"pk" json:"person_id"`
    name string `json:"name"`
    email string `json:"email"`
}

你可以在主键部分查看官方文档:
Beego模型定义

这可能是因为在创建表时,你将primary_key设置为auto。这是Beego的默认行为。

请也参考这篇文章:
Beego的ORM在每次更新、删除、读取时都给出主键值

英文:

If you want Beego’s ORM to have a different primary key, you should use this:


type Person struct {
    PersonId int64 `orm:"pk" json:"person_id"`
    name string `json:"name"`
    email string `json:"email"`
}

You can check the official documentation here in the primary key section:
Beego Model Definition

This might be happening because when creating your table you have primary_key set to auto. Which is the default Beego behaviour.

Please check this article also:
https://developpaper.com/question/beegos-orm-gives-the-primary-key-value-every-update-delete-read/

huangapple
  • 本文由 发表于 2021年11月30日 00:59:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/70158439.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定