用户的ID如何能改成nanoid

目前默认的用户createdby都记录的是ID,而且ID是bigint,在数据组合的时候可能会有性能问题。

有如下疑问:

  1. 用户的ID能不能像其他的collection一样换数据类型
  2. createdby或者自己定义的一个栏位不记录创建用户的ID,而是他的名称。

ID 正在改进

能说下大概的走向吗?这个对我们表结构设计的原则影响比较大。

建表的时候不要选 ID

然后新建个 NanoID,并勾选 Primary key

谢谢回复,这是对新增的表是可以的,我有疑问的是内置的《user》用户表,它的ID改不掉,是换不了的,看了代码好像牵涉到的地方蛮多的。

后续的计划 Users 表的 ID 会改为 Snowflake ID,好处是兼容旧数据的同时,又可以支持分布式场景。

@lorin_gao

在数据组合的时候可能会有性能问题。

是什么意思?

  1. Snowflake ID可以,我的场景就是分布式部署应用,最后又要汇总到中央库的。

  2. 在数据组合的时候可能会有性能问题,这个要表达的是,比如我的一张表work_order,在系统中选择的是创建人栏位,nocobase系统中实际是建立了一个创建人的ID的栏位,在前端展示的时候每次都需要join(work_order, user)两张表,表的体量大会有点麻烦。 我们倾向于直接将用户名称或者工号啥的直接写到 createby(字符串),毕竟用户只需要看到这个值。

  3. 如果不能改成这样,有没有个临时方案,比如我定义一个字段叫creator,在表保存的时候获取当前用户名,自己填进去?

3 可以你自己来实现