用了3个月的prisma,作为和TypeOrm可以说占据了大部分的node后端orm份额,但实际我个人用起来很一般,甚至在我看来目前完全称不上什么下一代ORM。
以下为个人使用过程中遇到的,仅作记录。
核心功能缺失
我开始的时候使用SQLite进行开发,但是在使用过程中发现prisma的Sqlite支持非常不完善,甚至可以说是部分功能完全不可用,比如说:
- createMany,作为ORM,我个人认为这是最核心这个功能,然而在Sqlite中是不支持的,很久的issue了。
prisma团队以性能问题,一直没有解决,这个功能在我看来是非常基础的功能。开发者也明确说明了不需要在乎性能,就是想做开发测试,但是prisma却仍然没有支持,这让我非常不解,最后不得不换到了postgres上。
提出的优秀feat官方并不进行支持
- 不支持拆分配置文件。
prisma
的数据模型设计文件并非.ts
,而是自定义的*.prisma
。以我正在开发中的项目为例子,目前只设计了62张表,schema.prisma
(prisma
默认存放表结构的文件)已经800+行。 - 不提供
@default(nanoid())
,只支持@default(uuid())
。
Bug年久失修
schema.prisma中定义,
1
2
3
4
5model Answer {
id String
question Question
questionId String
}然后在代码中使用
1
2
3
4
5
6
7
8create(questionId: string, input: AnswerInput) {
return this.prisma.answer.create({
data: {
...input,
questionId,
},
});
}以上,看起来没错,但是, Type ‘string’ is not assignable to type ‘never’ #15946 - @DiogoMarques2003 opened this issue on Oct 24, 2022
最后
希望prisma能够越来越好,但是目前来看,我个人认为prisma还不够成熟,还有很多需要完善的feat。