# sql 项目转换后的注意事项 ## 1.数据库数据类型 ### 1.1 字符串,有长度的使用 `character varying`; 不加限制的使用 `text` ### 1.2 数字使用 `integer`; 金额使用 `money` ### 1.3 时间使用 `timestamp without time zone` 开始时间与结束时间都分为 2 个字段 表属性在 Column 装饰器上添加: ``` transformer: { from: value => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : value), to: value => value } ``` 用来格式化输出格式 ### 1.4 不能像 mongodb 一样轻易使用 JSON 文档模式 - 因为 JSONB 数据中,只有精确查询: ``` Array:[1,2,3] JSONB_CONTAINS/JSONB_EXISTS(column, :column)', { column: 1 } ``` ``` object: {test:'123'} JSONB_CONTAINS(column, :val)', { val: { test: '123' } } ``` ``` Array where "${root_column}" @> '[{"${key}": ${value} }]' ``` 导致文档模式查询会变得不可能,所以使用 JSONB 数据格式的情况,只有准确查询; 将文档模式的设计变成表关联,联查出来 ## 2.数据库导入 ### 2.1 带 id 导入数据 带 id 导入数据后,需要执行数据库命令,使 id 的序列从导入数据的最后一条数据开始,否则会出现 id 已存在问题: ``` SELECT setval('"company_id_seq"', (SELECT max(id) FROM "company")); SELECT setval('"表名_唯一约束的字段_seq"', (SELECT max(唯一约束的字段) FROM 表名)); ```