Bootstrap

[ CloudWeGo 微服务实践 - 04 ] 尝试操作数据(1)

在昨天的一节 中,我们初始化了一个项目,当然只是简单的写了一个接口,想要成为一个项目首先有一个完整的逻辑,开放了接口,自然要把数据先给存储起来,先跑通一个接口的流程。

目标

ORM 选型

如果有留意 的项目,里边搜集了大量 Go 类库和框架,包含了 Go 生态的几乎常见的项目。可能大多数的选择是 ,但是今天不想使用这款,今天试试 ,由 (今天以后要叫 )开源的产品,也是当时参加 Go 进阶训练营毛剑老师推荐的。

ent 简介

我们直接截图了官方的介绍,如下:

引入 ent

go get entgo.io/ent/cmd/ent

其详细用法可参看,非常的详实,并且有中文。

Post 定义

初始化 Post 结构

go run entgo.io/ent/cmd/ent init Post

执行之后,我们已经看到了一个名为 的目录:

定义 Post 字段

字段定义方法可直接参考 一节。

我们在 文件中开始定义对象结构,在 方法中:

// Fields of the Post.
func (Post) Fields() []ent.Field {
	return []ent.Field{
		field.UUID("id", uuid.UUID{}).Default(uuid.New).StorageKey("oid"),
		field.String("title").Comment("标题").NotEmpty(),
		field.Text("content").Comment("内容").NotEmpty(),
		field.Time("created_at"),
		field.Time("updated_at"),
	}
}

我们也能在 ent 源码中发现可以设置的类型:

生成对应代码

刚刚我们使用了 ,在生成 对应代码前,我们先执行一下

go mod tidy 

然后再去生成代码:

go generate ./ent

效果如下:

使用 ent

经过前几步的准备工作,我们可以尝试使用 ORM,在 CreatePost 方法尝试写入数据

在下载依赖,还没搞完,明天继续...

剩下的部分,我们做了下半节>>