Prisma 避坑指南!
- 环境变量问题
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
-
npx prisma db push默认取 .env 配置文件,那多环境怎么处理? -
增加
.env.test.env.prod等文件, 安装dotenv-cli,执行dotenv -e .env.test -- npx prisma db push来指定 prisma 的运行环境 -
实际项目中与 nodejs (koa、egg、midway、nest)等框架结合使用时,如 midway.js ,包含内置配置文件为 config.test.ts 启动使用
NODE_ENV来指定环境变量 ,启动命令如下cross-env NODE_ENV=test pm2 start ./bootstrap.js --name=midway-app -i 2。那么怎么让 prisma 知道是 test 环境呢? -
执行命令
dotenv -e .env.test -- cross-env NODE_ENV=test pm2 start ./bootstarp.js --name=midway-app -i 2
-
Prisma ORM 创建关系型数据库时,如何不创建外键,依然能够关联查询?
- 很简单,增加
relationMode = "prisma",选择prisma模式。 注意索引@@index()
datasource db { provider = "mysql" url = env("DATABASE_URL") relationMode = "prisma" }model User { id String @id @default(uuid()) roleId String? role UserRole? @relation(fields: [roleId], references: [id]) @@index([roleId]) @@map("user_admin") } model UserRole { id String @id @default(uuid()) code String @db.VarChar(32) name String @db.VarChar(32) User User[] @@map("user_role") } - 很简单,增加
-
Prisma 使用
@createAt与@updateAt时差问题怎么解决?(这里是mysql,其它应该同理)-
prisma 使用了
@createAt与@updateAt在其引擎内部处理时,同一处理成了UTC时间格式,也就是比北京时间慢8个小时。(mysql 、linux 时间均正常的情况下)-
可能引擎是国外开发的吧,想自动创建时间,以及修改自动更新时间的话,上面两种不能采取。使用如下方式取代:
model Dept { id Int @id @default(autoincrement()) name String @db.VarChar(255) desc String @db.VarChar(255) createAt DateTime @default(dbgenerated("NOW()")) @db.DateTime updateAt DateTime @default(dbgenerated("NOW() ON UPDATE NOW()")) @db.Timestamp(0) @@map("user_dept") }- 使用
NOW(),其实也就是select now()的时间, updateAt在mysql里面想自动更新的话,需要设置字段类型timestamp,字段值:CURRENT_TIMESTAMP,以及根据时间戳更新。这里转化成prisma 语法如上@default(dbgenerated("NOW() ON UPDATE NOW()")) @db.Timestamp(0)
- 使用
-
-
如果有其它关于 prisma 的问题,欢迎一起探讨!
Prisma 避坑指南!更多相关文章
JavaScript CSS Vue3 实现一个简单的Loading
配置和使用nvm免安装版本(nvm-noinstall.zip)
HarmonyOS:使用Node-API实现ArkTS与C/C++跨语言交互
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (一):项目简介及安装依赖
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (四):状态码的使用
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (五):POST上传文件的设置
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (六):token的设置
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (三):Cors的设置及.env文件的设置
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (二):项目文件夹架构及路由的设置
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (八):API说明(暂时完结,后续考虑将在线版mongoDB变为本地版)
报error:0308010C:digital envelope routines::unsupported错--nodejs版本过高(nvm安装(更换)不同版本nodejs)
小结---安装nvm解决node版本不兼容的问题(node版本切换)