Golang+Gorm库使用踩坑——未标识primarykey导致创建后无法返回修改

问题描述

做毕设ing,基本的增删改查。
这里是一个需要增的地方,代码如下:


func (BI *BlogImpl) CreateBlog(ctx context.Context, blogInformation repo.BlogInformation) (repo.BlogInformation, error) {

	err := BI.Db.Table(BlogTable).Create(&blogInformation).Error
	fmt.Println(blogInformation.Bid, "createBlog")
	if err != nil {
		return repo.BlogInformation{}, err
	}
	return blogInformation, nil
}

我在外层调用时候,是需要返回新增记录的ID。但是无法符合预期。通过打印发现,我这里返回的id就是0。

问题解决

翻阅之前写的一个正确样例,对比发现


type BlogInformation struct {
	Bid       int       `gorm:"column:bid"`
	
}

区别在于,我这里没有去指定主键。

根据官方文档,其demo中提到:

创建记录
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}

result := db.Create(&user) // 通过数据的指针来创建

user.ID             // 返回插入数据的主键
result.Error        // 返回 error
result.RowsAffected // 返回插入记录的条数

这个修改需要主键,所以应该在gorm指定一下。

参考资料

https://gorm.io/zh_CN/docs/create.html
官网文档这里

你可能感兴趣的:(Golang,莫名其妙的报错——我太傻了,golang,开发语言,后端)