Mingyong Chen
Mingyong Chen
`update` 的时候,设置的 `updates` 文档,这个文档有内嵌 `mongox.Model` 文档吗?或者实现 `DefaultModelHook` 了吗?如果没有满足这两个条件之一,是不会触发调用 `DefaultUpdatedAt()` 的
> `update` 的时候,设置的 `updates` 文档,这个文档有内嵌 `mongox.Model` 文档吗?或者实现 `DefaultModelHook` 了吗?如果没有满足这两个条件之一,是不会触发调用 `DefaultUpdatedAt()` 的 就是更新文档,需要实现 `DefaultModelHook`,才会调用 `DefaultUpdatedAt()`,你的更新文档如果是结构体,那么需要实现这个接口,或者内嵌 `mongox.Model` 。
> > `update` 的时候,设置的 `updates` 文档,这个文档有内嵌 `mongox.Model` 文档吗?或者实现 `DefaultModelHook` 了吗?如果没有满足这两个条件之一,是不会触发调用 `DefaultUpdatedAt()` 的 > > ```go > coll := NewCollection[TestColl](getTheCollection(t)) > ``` > > 额,难道不是直接根据泛型来判断触发的吗?一般来说既然定义了 collection的 struct包含了内置的 Model, 更新的时候应该可以直接根据泛型来判断吧,还需要另外将 update 也嵌入一个...
> 好的,谢谢你的解释。 > > 个人感觉可以考虑直接根据泛型来判断。 > > 主要是mongodb的update太灵活了,很多种写法,根据updates来判断估计会比较麻烦。 > > 另外就是根据updates的话可能侵入性也比较大。 > > 毕竟更新可能就发生在很多不同的字段组合,这个时候还要每个组合额外去定义一个包含内嵌Model的struct的话,好像有点得不偿失。 > > 个人的一点浅见,仅供参考 > > 这个库写的非常棒,加油! 嗯嗯,感谢你的建议,如果没有使用泛型的情况下,一般根据 `updates` 判断,有了泛型,确实是根据泛型判断是最好的。
不过通过泛型去判断会有一些问题: - 之前的流程,调用 `DefaultUpdatedAt()` 是自动设置 `updates` 里面的 `updated_at` 的值,如果是通过泛型,你的 `updates` 里面没有这个属性,无法设置,就需要侵入式的在 `updates` 里添加 `updated_at` 这个 `key-value`。 - 用户不一定使用 `updated_at` 这个命名,如果通过泛型,还需要额外的一个途径去获取用户的更新时间的 `field` 命名。
@lanlin 已经重构了设计,最新版本已经确保所有相关字段都被正确初始化或更新。 最新文档可参考 [内置 Model](https://go-mongox.dev/model.html)
> 比如说定义以下结构: type User struct { Name string `bson:"name"` Age int `bson:"age"` } > > 查询的时候或者更新的时候, 像下面这样, 有可能会拼错"name" update.Set("name", "Mingyong Chen") > > 或者后期重构的时候, 也有可能漏改了部分的"name" 有没什么方式能从User结构里面直接获取名称, 你有这种困扰么? > > 另外一个想法,...
> 另外一个想法, qmgo索引支持有点差, 比如全文索引创建和列出索引就没实现. 我感觉索引很重要, 不知道为啥他们不咋关心这 你的想法是什么呢,获取到 `mongo` 的 `Collection` 对象,就可以创建和查询索引了,你希望有更简易的操作吗?
> > > 另外一个想法, qmgo索引支持有点差, 比如全文索引创建和列出索引就没实现.我感觉索引很重要, 不知道为啥他们不咋关心这 > > > > > > 你的想法是什么呢,获取到 的 对象,就可以创建和查询索引了,你希望有更简易的操作吗?`` mongo``Collection `` > > 嗯, 差不多这想法, 就是封装个索引的. 了解
感谢认可。这个搜索的问题,我之前也思考过,为什么很难搜到,项目名字这个原因也想过,不确定改了项目名是否就容易被搜到,因为我看到有的 `mongo` 库,即使不包含 `mongodb`, `mongo` 这两个关键词,也能排在前面,所以我一直以为是活跃度不够导致的,也可能还有其他原因,除了项目名这个因素,如果你还知道其他因素,欢迎探讨!