Nov 29, 2023
修复
- 使用 withReplica 功能时正确转发参数(#1536)
- 修复 selectDistinctOn 与多个列不兼容的问题(#1466)
新特性/辅助工具
所有方言的查询构建器的详细 JSDoc
现在,您可以在开发和使用 JSDoc 时访问更多信息、提示、文档链接等。之前,我们只为过滤表达式提供了这些信息,但现在您可以在 Drizzle 查询构建器的所有部分中看到它们。
SQL 中的新聚合函数辅助工具
请记住,聚合函数通常与 SELECT 语句的 GROUP BY 子句一起使用。因此,如果您在一个查询中使用聚合函数和其他列,请确保使用.groupBy
子句
以下是使用sql
模板的函数列表和等效写法:
count
countDistinct
avg
avgDistinct
sum
sumDistinct
max
min
要查找更多信息,请查看文档:聚合函数辅助工具
新包
Drizzle ESLint 插件
对于无法对特定场景执行类型检查的情况,或者无法理解错误消息的复杂情况,我们决定创建一个带有推荐规则的 ESLint 包。该插件旨在帮助开发人员处理开发过程中的关键场景。更多信息请参见文档。
安装
您可以在 IDE 中安装这些包以获得 TypeScript 支持
用法
创建一个.eslintrc.yml
文件,将drizzle
添加到plugins
中,并指定要使用的规则。下面是所有现有规则的列表
所有配置
该插件导出了一个包含所有规则的 all 配置(不包括已弃用的规则)。
目前,all
配置与 recommended
配置等效。
规则
enforce-delete-with-where:在.delete()
语句中使用the.where()
子句来强制使用delete
。大多数情况下,您不需要删除表中的所有行,并且需要某种 WHERE
语句。
错误消息:
可选地,在插件选项中可以定义 drizzleObjectName
,接受string
或string[]
。当您有对象或类具有不是来自 Drizzle 的 delete 方法时,此选项非常有用。这样的 delete
方法将触发 ESLint 规则。为了避免这种情况,您可以定义在代码库中使用的 Drizzle 对象的名称(如 db
),这样规则仅在删除方法来自该对象时才会触发:
示例配置1:
示例配置2:
enforce-update-with-where:在.update()
语句中使用the.where()
子句来强制使用update
。大多数情况下,您不需要更新表中的所有行,并且需要某种 WHERE
语句。
错误消息:
可选地,在插件选项中可以定义 drizzleObjectName
,接受string
或string[]
。当您有对象或类具有不是来自 Drizzle 的 update 方法时,此选项非常有用。这样的 update
方法将触发 ESLint 规则。为了避免这种情况,您可以定义在代码库中使用的 Drizzle 对象的名称(如 db
),这样规则仅在更新方法来自该对象时才会触发:
示例配置1:
示例配置2: